Файловый ввод-вывод в C++

В языке C++ ввод-вывод осуществляется через объекты классов ifstream (для чтения данных) и ofstream (для вывода данных). Эти классы объявлены в заголовочном файле fstream.

При создании этих объектов нужно передать в конструктор один параметр - имя файла.

После этого с этими объектами можно работать точно так же, как с объектами cin и сout.

После окончания работы с файлами, файлы нужно "закрыть" эти объекты, вызвав для них метод close().

Приведем пример программы, которая считывает два числа из файла с именем input.txt и выводит результат в файл output.txt.

 
#include<fstream>
using namespace std;
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int a, b;
    fin >> a >> b;
    fout << a + b << endl;
    fin.close();
    fout.close();
}

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

string s;

getline(fin, s);

Для проверки состояния файла можно использовать метод файла eof(). Он возвращает значение true или false в зависимости от того, был ли обнаружен конец файла при чтении:

if (fin.eof())

Но при использовании этого метода могут возникнуть затруднения, например, с тем, что если после последнего числа в файле стоит символ конца строки, то состояние "достигнут конец файла" произойдет не после чтения последнего числа, а после следующего чтения.

Более надежный (и простой!) способ считать последовательность чисел из файла до конца файла -- использование значения, возвращаемого при считывании:

while (fin >> d)