Ввод-вывод с использованием потоковых классов

   
На этом шаге мы перечислим особенности использования потоковых классов в библиотеке STL.

   
Классы ввода-вывода являются важнейшими классами стандартной библиотеки C++, - программа, которая не
вводит и не выводит данные, вряд ли принесет много пользы. Более того, классы ввода-вывода стандартной
библиотеки C++ не ограничиваются операциями с файлами, экраном и клавиатурой. Они создают
расширяемую архитектуру для форматирования произвольных данных и работы с произвольными "внешними представлениями".

   
Библиотека IOStream (как называется совокупность классов ввода-вывода) - единственная часть стандартной
библиотеки C++, которая широко использовалась до стандартизации C++. В ранние поставки систем C++
включались классы, разработанные в AT&T и ставшие фактическим стандартом ввода-вывода. Хотя в дальнейшем
эти классы адаптировались для интеграции со стандартной библиотекой C++ н выполнения некоторых новых
функций, базовые принципы, заложенные в классы библиотеки IOStream, остались неизменными.

   
Мы начинем с общего обзора важнейших компонентов и принципов потокового ввода-вывода, после чего подробно
рассматрим возможности практического применения библиотеки IOStream - от простого форматирования до
интеграции с новыми внешними представлениями.

   
За дополнительной информацией обращайтесь к книгам, посвященным потоковому вводу-выводу, или справочникам по
стандартной библиотеке C++.

   
Для тех, кто знакомым со "старой" библиотекой IOStream, перечислим изменения, внесенные в процессе
стандартизации. Хотя основные принципы потоковых классов ввода-вывода остались неизменными, были добавлены
некоторые важные новшества, расширяющие возможности настройки и адаптации.

  • Была проделана работа по интернационализации ввода-вывода.
  • Потоковые классы для символьных массивов типа char* были заменены классами, использующими
    строковые типы стандартной библиотеки C++. Старые классы по-прежнему поддерживаются для обеспечения совместимости, но они считаются устаревшими.
  • Обработка ошибок была интегрирована с обработкой исключений.
  • Библиотечные классы IOStream с поддержкой присваивания (имена таких классов заканчиваются суффиксом _withassign)
    были заменены новыми средствами, доступными для всех потоковых классов.
  • Классы библиотеки IOStream преобразованы в шаблоны, что позволяет поддерживать разные
    представления символов. Однако в результате возникает побочный эффект - нельзя использовать простые опережающие
    объявления потоковых классов:

      class ostream;   // Ошибка
    

    Соответствующие объявления были собраны в специальном заголовочном файле, поэтому вместо них следует
    использовать новый заголовок:

      #include <iosfwd>  // OK
    
  • Все символические имена библиотеки IOStream, как и в остальных компонентах стандартной библиотеки
    C++, объявляются в пространстве имен std.

   
Со следующего шага мы приведем общие сведения о потоках ввода-вывода.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий