Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования Сpp 25.09.11 (2).doc
Скачиваний:
16
Добавлен:
19.08.2019
Размер:
10.09 Mб
Скачать

Ввод-вывод в файл

Создать поток это, значит, вызвать объект, который обеспечит передачу данных от одного устройства к другому.

В языке С++ потоки является объектами классов ifstream (input file stream - поток ввода из файла) и ofstream (output file stream - поток вывода в файл). Это значит, что для создания входного или выходного потока нужно сначала создать специальный объект соответствующего класса. Но эти классы хранятся в библиотеке fstream, поэтому во всех программах использующих потоки должен быть заголовочный файл

#include <fstream> //Подключение библиотеки

Далее нужно создать объекы, осуществляющие ввод и вывод.

ifstream inStrm1(“C:\\Test.dat”), inStrm2(“Test.dat”), inStrm3;

ofstream ofStrm1((“C:\\Test.dat”), ofStrm2((“Test.dat”), ofStrm3;

В первой строке созданы три объекта, или три потока: inStrm1, inStrm2, inStrm3. Причем первый использует конструктор к котором указывается полное имя файла из которого будут поступать байты, второй сокращенное имя, а третий, вообще конструктор без параметров. Первый объект полностью определяет расположение файла, второй предполагает, что файл наодится в одной директории с программой, которая его вызывает, наконец, третий не связан ни с каким файлом.

Тоже самое можно сказать о второй строке, в которой определены выходные потоки.

Классы ifstream или ofstream содержат функцию open, с помощью которой можно указать имя файла, который следует присоединить к потоку. Если файла с указанным именем не существует, то входной поток создаст его. Если файл с таким именем уже есть, входной поток заменит его содержимое новыми данными, при этом старые данные будут потеряны. После того как файл присоединен к потоку, или, как говорят, открыт, используются операторы ввода >> и вывода <<, которые направляют данные в программу или из программы.

Раз есть функция присоединения файла к потоку, то, вероятно, есть функция отсоединения от потока. Действительно такая функция имеется во всех классах создающих потоки, это функция close().

В качестве примера рассмотрим программу, которая вводит с клавиатуры 5 символов, записывает их в файл с именем character.dat, а затем читает файл и выводит символы в обратном порядке на экран.

#include <iostream>/*Подключение библиотеки ввода с клавиатуры и вывода на экран */

#include <fstream> /*Подключение библиотеки файловых потоков */

using namespace std; /*Указание на использование стандартного пространства имен */

main(){

//объявление потоков, т.е. присвоение им имен

Ifstream inStream; //Объявление входного потока

ofstream outStream; //Объявление выходного потока

char ch1[5],ch2[5]; //Объявление 2-х символьных массивов

outStream.open("character.dat"); /*присоединение файла с именем "character.dat" к выходному потоку */

for(int i=0; i<5;i++) {

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

cin>>ch1[i];

outStream<<ch1[i]; //символы с помощью выходного потока

//записываются из массива в файл

}

outStream.close(); //закрытие выходного потока