|
Программирование >> Инициализация объектов класса, структура
(a) void operate( double ); void operate( string ); void operate( const Base & ); Derived *pd = new Derived; (b) void calc( int ); void calc( double ); void calc( const Derived & ); Base *pb = new Derived; operate( *pd ); operate( *pb ); 20. Библиотека iostream Частью стандартной библиотеки C++ является библиотека iostream - объектно-ориентированная иерархия классов, где используется и множественное, и виртуальное наследование. В ней реализована поддержка для файлового ввода/вывода данных встроенн1х типов. Кроме того, разработчики классов могут расширять эту библиотеку для чтения и записи новых типов данных. Для использования библиотеки iostream в программе необходимо включить заголовочный файл #include <iostream> Операции ввода/вывода выполняются с помощью классов istream (потоковый ввод) и ostream (потоковый вывод). Третий класс, iostreami, является производным от них и поддерживает двунаправленный ввод/вывод. Для удобства в библиотеке определены три стандартных объекта-потока: cin - объект класса istreami, соответствующий стандартному вводу. В общем случае он позволяет читать данные с терминала пользователя; cout - объект класса ostreami, соответствующий стандартному выводу. В общем случае он позволяет выводить данные на терминал пользователя; cerr - объект класса ostream, соответствующий стандартному выводу для ошибок. В этот поток мы направляем сообщения об ошибках программы. Вывод осуществляется, как правило, с помощью перегруженного оператора сдвига влево (<<), а ввод - с помощью оператора сдвига вправо (>>): #include <iostream> #include <string> int main() { string in string; льзователя пожалуйста: ; вывести литерал на терминал пол cout << Введите свое имя, пожалуй прочитать ответ пользователя в in string cin >> in string; if ( in string.empty() ) вывести сообщение об ошибке на терминал пользователя cerr << ошибка: введенная строка пуста!\n ; else cout << Привет, << in string << !\n ; Назначение операторов легче запомнить, если считать, что каждый указывает в сторону перемещения данных. Например, >> x перемещает данные в x, а перемещает данные из x. (В разделе 20.1 мы покажем, как библиотека iostream поддерживает ввод данных, а в разделе 20.5 - как расширить ее для ввода данных новых типов. Аналогично раздел 20.2 посвящен поддержке вывода, а раздел 20.4 - расширению для вывода данных определенных пользователем типов.) Помимо чтения с терминала и записи на него, библиотека iostream поддерживает чтение и запись в файлы. Для этого предназначены следующие классы: ifstreami, производный от istreami, связывает ввод программа: с файлом; ofstreami, производный от ostreami, связывает вывод программа: с файлом; fstreami, производн1й от iostreami, связывает как ввод, так и вывод программы с файлом. Чтобы использовать часть библиотеки iostream, связанную с файловым вводом/выводом, необходимо включить в программу заголовочный файл #include <fstream> (Файл fstream уже включает iostreami, так что включать оба файла необязательно.) Файловый ввод/вывод поддерживается теми же операторами: << x #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() ); водим отсортированное множество слов в файл ctor< string >::iterator iter = text beginO; ( cnt = 1; iter outfile << *iter (cnt % 8 ? : \n ); vector< string >::iterator iter = text.begin(); for ( cnt = 1; iter != text.end(); ++iter, ++cnt ) outfile << *iter return 0; Вот пример сеанса работы с этой программой. Нас просят ввести файл для сортировки. Mi набираем alice emma (набранные на клавиатуре символы напечатаны полужирным шрифтом). Затем программа направляет на стандартный вывод все, что прочитала из файла: Введите имя файла для сортировки: alice ea Alice Ea has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he tells her, magical but untamed. Daddy, shush, there
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |