|
Программирование >> Программирование на языке c++
void main(void) { fstream ff; описание объекта ff класса fstream char line[79]; массив для хранения промежуточных данных ff.open( my.txt ,ios::outios::in); открытие файла my txt для записи и чтения if(!ff) проверка наличия возможных ошибок { cerr Error\n ; abort{); } завершение программы при ошибке ff.seekp(0,ios::beg); перемещение текущего указателя в начало файла ff.read{line,15); чтение из файла первого слова ( Lisbon ) ff.seekp(0,ios::beg); перемещение указателя в начало файла ff.write(a,15); запись в файл слова а ( Aveiro ) ff.seekp(-15,ios;:end); позиция -15 от конца файла ff.write(line,15); изменение значения последнего слова ( Lisbon ) ff.seekp(0,ios::beg); перемещение указателя в начало файла for (int i=0;i<size;i-l-l-) { ff.read(line,15); cout line << endl; } вывод строк из файла Программа меняет местами первое и Последнее слова в текстовом файле my.txt, который построен в предыдущей программе. В ней использована функция seekp, которая описывается в следующем виде: ostream& seekp{streamoff,seek dir); где streamoff - число байтов, которое отсчитывается от позиции seek dir; seek dir может принимать одно из тре,х значений: beg, cur и end (beg - начало файла, cur - текущая позиция, end - конец файла). В случае, если seek dir равно cur или end, streamoff может принимать отрицательные значения (т. е. отсчет байтов ведется в направлении к началу файла). Для определения текущей позиции в файле может использоваться функция tellp, которая описывается следующим образом: streamoff tellp(); Функции seekp и tellp описаны в классе ostream и используются для позиционирования и получения информации о текущей позиции при записи данных в файл. Аналогичные функции seekg и tellg, которые используются при чтении данных из файла, описаны в классе istream. Результаты работы программы представятся в виде: Aveiro Porto Coimbra Lisbon 8.9. Работа со строками Работа со строками подцерживается функциями классов ostrstream, istrstream и strstream, которые являются производными классами соответственно классов istream и ostream (см. рис. 8.2). При этом в программу необходимо включить файл strstream.h директивой #include <strstream.h>. Поскольку DOS имеет ограничение на число символов в имени файла, то последняя буква из имени strstream для DOS будет удалена. Функции для работы со строками во многом подобны функциям sscanf и sprintf языка С. Классы ostrstream и istrstream имеют несколько конструкторов, которые можно найти в соответствующих руководствах по программированию. Рассмотрим один из этих конструкторов: ostrstream{char *buf, int len, int mode=ios::out); buf - указатель на буфер, len - размер буфера в байтах, mode - режим istrstream(char *str, int n); str - указатель на строку, n - максимальное число байтов, извлекаемых из строки str Все действия со строками можно выполнять примерно так же, как и с файлами, поэтому ограничимся рассмотрением двух примеров: #include <strstream.h> #include <iomanip.h> #include <stdlib.h> #define size 100 если уменьшить значение size, например, до 10,то в программе будет выводиться сообщение об ошибке void main(void) { char* buf = new char[size]; ostrstream n(buf,size); n << число1 = setiosflags{ios::fixed \ ios::showbase) setprecisian(l) 3.123 endl число2 = 30 endl hex 30 endl 40 ends; if(n.good()) cout buf; проверка возможных ошибок else { cerr ошибка\п ; } Результаты: число1 = 3.1 число2 = 30 0x2f 0x28 #include <strstream.h> #include <iomanip.h> #include <stdlib.h> #define size 100 void main(void) { char a[] = Aveiro Lisbon Porto Coimbra Coviiha ; istrstream m(a,size); char c[20]; while(m c) cout с endl; Результаты: Aveiro Lisbon Porto Coimbra
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.062
При копировании материалов приветствуются ссылки. |