Язык программирования C++. Вводный курс


Библиотека iostream - часть 2


/p>

}

Назначение операторов легче запомнить, если считать, что каждый “указывает” в сторону перемещения данных. Например,

>> x

перемещает данные в x, а

<< x

перемещает данные из x. (В разделе 20.1 мы покажем, как библиотека iostream

поддерживает ввод данных, а в разделе 20.5 – как расширить ее для ввода данных новых типов. Аналогично раздел 20.2 посвящен поддержке вывода, а раздел 20.4 – расширению для вывода данных определенных пользователем типов.)

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

·         ifstream, производный от istream, связывает ввод программы с файлом;

·         ofstream, производный от ostream, связывает вывод программы с файлом;

·         fstream, производный от iostream, связывает как ввод, так и вывод программы с файлом.

Чтобы использовать часть библиотеки iostream, связанную с файловым вводом/выводом, необходимо включить в программу заголовочный файл

#include <fstream>

(Файл fstream уже включает iostream, так что включать оба файла необязательно.) Файловый ввод/вывод поддерживается теми же операторами:

#include <fstream>

#include <string>

#include <vector>

#include <algorithm>

int main()

{

   string ifile;

 

   cout << "Введите имя файла для сортировки: ";

   cin >> ifile;

 

   // сконструировать объект класса ifstream для ввода из файла

   ifstream infile( ifile.c_str() );

 

   if ( ! infile ) {

      cerr << "ошибка: не могу открыть входной файл: "

           << ifile << endl;

      return -1;

   }

 

   string ofile = ifile + ".sort";

 

   // сконструировать объект класса ofstream для вывода в файл

   ofstream outfile( ofile.c_str() );

   if ( ! outfile) {

      cerr << "ошибка: не могу открыть выходной файл: "

           << ofile << endl;

      return -2;

   }

 

   string buffer;

   vector< string, allocator > text;

 

   int cnt = 1;

   while ( infile >> buffer ) {

         text.push_back( buffer );

         cout << buffer << (cnt++ % 8 ? " " : "\n" );

   }

 

   sort( text.begin(), text.end() );

 

   // выводим отсортированное множество слов в файл

   vector< string >::iterator iter = text.begin();

   for ( cnt = 1; iter != text.end(); ++iter, ++cnt )

       outfile << *iter

               << (cnt % 8 ? " " : "\n" );

 

   return 0;

<


Начало  Назад  Вперед



Книжный магазин