Задание 3. Класс fstream

Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1-12 задания 4 из параграфа 1.6, использую класс fstream.

 

Для поддержки файлового ввода и вывода стандартная библиотека С++ содержит классы ifstream (входной файловый поток), ofstream(выходной файловый поток), fstream (двунаправленный файловый поток). Файловый потоки обеспечивают более надежный ввод/вывод, чем стандартные функции библиотеки С. Для использования файловый потоков необходимо подключить к программе заголовочный файл <fsteam.h>.

Над файловыми потоками можно выполнять следующие операции:

- создание потока (потокового объекта)

- открытие потока и связывание его с файлом

- обмен с потоком (ввод/вывод)

- закрытие файла (отсоединение от потока).

Создание потока можно осуществитьс с помощью конструктора без параметров, например

ofstream outFile;// создан выходной поток

Чтобы свзяать поток, созданный таким образом, с файлом используют метод open().

Например,

outFile.open(“1.txt”);

Метод open() может иметь следующие параметры

ios::in Открыть файл для ввода

ios::out Открыть файл для вывода

ios::ate Установить указатель на конец файла

ios::app Открыть в режиме добавления в конец файла

ios::trunc Если файл сущесвтует обрезать его до нулевой длины

ios::binary Открыть в двоичном режиме

ios::nocreate Если файл не существует, установить поток в нулевое значение

ios::noreplace Если файл существует, устновить поток в нулевое значение

Обмен данных с файлами входными и выходными потоками осуществяется также как со стандарными потоками cin и cout соотвественно – с помощью опраций чтения из потока (>>) и записи в поток (<<) и специальных методов.

Например,

char c, s[20];

inFile.get(c);// считали очередной символ в переменную с

inFile>>c;//считали очердной символ в переменную с

inFile.getline(s,sizeof(s)); // считали строку в массив s

outFile.put(c); // записали символ с

outFile<<c<<s; //записали символ с и строку s

 

Контролировать, достигнут ли конец файла при считывании данных из потока, позволяет метод eof(), возращающий нулевое значение, если конец файла не достигнут и ненулевое в простивном случае.

При различных ошибочных ситуациях, напрмер переполнение диска или отсутсвия файла на диске, потоковый объект утанавливается в нулевое значение. Например,

ifstream inFile(“1.txt“);

if (!inFile) cout<<"Не существет такого файла!";

Для закрытия файла (отсоединения от потока) используют метод close(). Например,

outFile.close();

Пример. Решим задачу из примера 6.4, использую класс fstream. Дан текстовый файл, строки которого содержат не более m (m<=20) символов. Считать строки и записать их в файл result.txt в порядке считывания, причем каждая строка должна быть «перевернута».

#include <fstream.h>

 

void main ()

{

char filename[255];

cout<<"Введите имя файла ";

cin>>filename;

ifstream inFile(filename);

/*определили входной файловй поток (для чтения) и прикрепили к нему файл с именем filename */

 

if (inFile) // Если файл успешно открыт

{

ofstream outFile; //определили выходной файловый поток

//(для записи)

outFile.open("result.txt"); //присоединили файл с именем

//"result.txt" к выходному потоку

char s[20];// определяем массив для хранения

//считанной строки

while(!inFile.eof()) //Цикл считывания строк

{

inFile.getline(s,sizeof(s));// Считали очередную строку

int l=strlen(s);

if (s[l-1]!='\n') outFile<<s[l-1];

for (int j=l-2; j>=0; j--) outFile<<s[j];

//цикл записи символов строки в обратном порядке

outFile<<'\n';//запись символа новой строки

}

inFile.close();

outFile.close ();

cout<<"Файл записан";

}

else cout<<"Не существет такого файла!";

}








Дата добавления: 2015-10-09; просмотров: 700;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.