Лабораторная работа №8. Хранение данных на внешних носителях
Хранение данных на внешних носителях
С помощью классов
Заголовочный файл iostream.h определяет выходной поток cout. Аналогично, заголовочный файл f stream.h определяет класс выходного файлового потока с именем ofstream. Используя объекты класса ofstream, программы могут выполнять вывод в файл. Для начала вы должны объявить объект типа ofstream, указав имя требуемого выходного файла как символьную строку, что показано ниже:
ofstream file_object("FILENAME.EXT");
Если вы указываете имя файла при объявлении объекта типа ofstream, C++ создаст новый файл на вашем диске, используя указанное имя, или перезапишет файл с таким же именем, если он уже существует на вашем диске.
Следующая программа создает объект типа ofstream и затем использует оператор вставки для вывода нескольких строк текста в файл:
#include <iostream.h>
#include <fstream.h>
int main()
{
ofstream f("D://file.txt");
f << " Today thursday"<<'\n';
f<< "31.03.11";
}
В данном случае программа открывает файл file.txt и затем записывает строку в файл, используя оператор вставки.
Для того, чтобы считать данные из файла, необходимо создать объект типа ifstream (подготовить файл для чтения), указав в качестве параметра имя файла:
ifstream input_file("filename.EXT");
Следующая программа открывает файл file.txt, который был создан с помощью предыдущей программы, и читает, а затем отображает элементы файла:
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
int main()
{
ifstream rf("D://file.txt"); //связываем rf с файлом на диске
char one[64], two[64];
rf >> one; //считываем из файла данные в переменную one
rf >> two;
cout << one << endl;
cout << two << endl;
getch();
}
Если вы откомпилируете и запустите эту программу, то, вероятно, предположите, что она отобразит первые 2 строки файла. Однако, подобно cin, входные файловые потоки используют пустые символы, чтобы определить, где заканчивается одно значение и начинается другое. В результате при запуске предыдущей программы на дисплее появится следующий вывод:
Today
Thursday
Поэтому необходимо использовать getline для чтения строки файлового ввода. Следующая программа использует функцию getline для чтения всех трех строк файла:
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
int main()
{
ifstream rf("D://file.txt");
char one[64], two[64];
rf.getline(one, sizeof(one));
rf.getline(two, sizeof(two));
cout << one << endl;
cout << two << endl;
getch();
}
В данном случае программа успешно читает содержимое файла, потому что она знает, что файл содержит три строки. Однако во многих случаях ваша программа не будет знать, сколько строк содержится в файле. В таких случаях ваши программы будут просто продолжать чтение содержимого файла пока не встретят конец файла.
Не нашли, что искали? Воспользуйтесь поиском:
|