Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.doc
Скачиваний:
40
Добавлен:
12.04.2015
Размер:
4.91 Mб
Скачать

Вывод в файловый поток

При выполнении РГЗ 1 можно использовать новые потоки ввода/вывода, созданные на основе классов, для чего нужно подключить директиву

#include<iostream.h>

Поток cout представляет собой объект типа ostream (выходной поток). Используя класс ostream, можно выполнять вывод в cout с использованием оператора вставки или различных методов класса, например cout.put. Заголовочный файл iostream.h определяет выходной поток cout. Аналогично, заголовочный файл fstream.h определяет класс выходного файлового потока с именем ofstream. Используя объекты класса ofstream, можно выполнять вывод в файл. Для начала нужно объявить объект типа ofstream, указав имя требуемого выходного файла как символьную строку:

ofstream file_object("FILENAME.EXT");

Если указано имя файла при объявлении объекта типа ofstream, язык C++ создаст новый файл на диске, используя указанное имя, или перезапишет файл с таким же именем, если он уже существует на диске.

Следующая программа OUT_FILE.CPP создает объект типа ofstream и затем использует оператор вставки для вывода нескольких строк текста в файл BOOKINFO.DAT:

#include <fstream.h>

void main(void)

{

ofstream book_file("BOOKINFO.DAT");

book_file << "Используем потоки вывода в файл, " << "Реализация С++" << endl;

book_file << "На классах" << endl;

book_file << "2009" << endl;

}

В данном случае программа открывает файл BOOKINFO.DAT и затем записывает в него три строки:

Используем потоки вывода в файл, Реализация С++

На классах

2009

Таким образом, используя класс ofstream, можно быстро выполнить операции вывода в файл.

Чтение из входного файлового потока

Аналогично операциям вывода можно выполнить операции ввода из файла, используя объекты типа ifstream. Можно создать объект, передавая ему в качестве параметра требуемое имя файла:

ifstream input_file("filename.EXT");

Следующая программа FILE_IN.CPP открывает созданный файл BOOKINFO.DAT и читает его, а затем отображает первые три элемента файла:

#include <iostream.h>

#include <fstream.h>

void main(void)

{

ifstream input_file("BOOKINFO.DAT") ;

char one[64], two[64], three[64];

input_file >> one;

input_file >> two;

input_file >> three;

cout << one << endl;

cout << two << endl;

cout << three << endl;

}

Подобно потоку cin, входные файловые потоки используют пустые символы, чтобы определить, где заканчивается одно значение и начинается другое. В результате при этой программе на дисплее появится следующий вывод:

Используем

потоки

вывода

Чтение целой строки файлового ввода

Известно, что для чтения целой строки с клавиатуры можно использовать функцию cin.getline. Подобным образом объекты типа ifstream могут использовать getline для чтения строки файлового ввода. Следующая программа FILELINE.CPP использует функцию getline для чтения всех трех строк файла BOOKINFO.DAT. Например:

#include <iostream.h>

#include <fstream.h>

void main(void)

{

ifstream input_file("BOOKINFO.DAT");

char one[64], two[64], three [64] ;

input_file.getline(one, sizeof(one)) ;

input_file.get line(two, sizeof(two));

input_file.getline(three, sizeof(three)) ;

cout << one << endl;

cout << two << endl;

cout << three << endl;

}

В этом случае программа успешно читает все три строки файла. Однако во многих случаях ей неизвестно, сколько строк содержится в файле. В таких случаях она будет просто продолжать чтение содержимого файла пока не встретит конец файла.