Программирование >>  Программирование на языке c++ 

1 ... 109 110 111 [ 112 ] 113 114 115 ... 159


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



1 ... 109 110 111 [ 112 ] 113 114 115 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.062
При копировании материалов приветствуются ссылки.
Яндекс.Метрика