Описание тега iostream
Используйте этот тег для вопросов об использовании iostreams, включая написание перегруженных операторов для ваших собственных типов.
Стандартная библиотека C++ определяет std::istream
, std::ostream
а также std::iostream
базовые классы, а также стандартные объекты потока std::cin
, std::cout
а также std::cerr
и производные типы iostream для чтения / записи файлов и строк. Объект iostream отвечает за операции форматирования (например, преобразование целого числа1234
в строку "1234"
или наоборот), но использует буфер потока (объект, производный от std::streambuf
) для взаимодействия с базовым потоком данных. Буфер потока выполняет любую буферизацию символов, управляет позицией потока и транспортирует символы на / от внешнего устройства, такого как файл.
Iostreams используют локали для поддержки интернационализации и реализованы как иерархия шаблонов классов для поддержки различных типов символов, так что std::istream
фактически является typedef для специализации std::basic_istream<char, std::char_traits<char>>
. Первый параметр шаблона - это тип символа, используемый потоком, а второй - класс характеристик, который обеспечивает операции для работы с типом символа.
Краткое введение в iostreams можно найти в главе 3: Обзор стандартной библиотеки в TC++PL Страуструпа. Стандартная библиотека C++ Джосуттиса дает больше информации. Наиболее подробный справочник по использованию и расширению iostreams - это стандартные C++ IOStreams и Locales от Langer & Kreft (см. Отрывок о буферах потока).