Spec-Zone.ru › C++

Библиотека ввода/вывода

C++ включает следующие библиотеки ввода/вывода: библиотеку ввода/вывода на основе потоков стиля OOP на основе потоков, семейство функций печати(с C++23) и стандартный набор функций ввода/вывода стиля C.

Ввод/вывод на основе потоков

Библиотека ввода/вывода на основе потоков организована вокруг абстрактных устройств ввода/вывода. Эти абстрактные устройства позволяют одному и тому же коду обрабатывать ввод/вывод в файлы, потоки памяти или пользовательские адаптеры устройств, которые выполняют произвольные операции (например, сжатие) на лету.

Большинство классов являются шаблонными, поэтому их можно адаптировать к любому базовому типу символов. Для наиболее распространенных базовых типов символов (char и wchar_t) предоставляются отдельные определения типов. Классы организованы в следующей иерархии:

cpp/io/ios base cpp/io/basic ios cpp/io/basic istream cpp/io/basic ifstream cpp/io/basic istringstream cpp/io/basic ostream cpp/io/basic ofstream cpp/io/basic ostringstream cpp/io/basic fstream cpp/io/basic stringstream cpp/io/basic iostreamstd-io-complete-inheritance.svg

Диаграмма наследования

Абстракция
Определено в заголовке <ios>
ios_base
управляет флагами форматирования и исключениями ввода/вывода
(класс)
basic_ios
управляет произвольным буфером потока
(шаблон класса)
Определено в заголовке <streambuf>
basic_streambuf
абстрагирует физическое устройство
(шаблон класса)
Определено в заголовке <ostream>
basic_ostream
оборачивает заданное абстрактное устройство (std::basic_streambuf)
и предоставляет интерфейс вывода высокого уровня
(шаблон класса)
Определено в заголовке <istream>
basic_istream
оборачивает заданное абстрактное устройство (std::basic_streambuf)
и предоставляет интерфейс ввода высокого уровня
(шаблон класса)
basic_iostream
оборачивает заданное абстрактное устройство (std::basic_streambuf)
и предоставляет интерфейс ввода/вывода высокого уровня
(шаблон класса)
Реализация ввода/вывода файлов
Определено в заголовке <fstream>
basic_filebuf
реализует физическое устройство файла
(шаблон класса)
basic_ifstream
реализует операции ввода из потока файла высокого уровня
(шаблон класса)
basic_ofstream
реализует операции вывода в поток файла высокого уровня
(шаблон класса)
basic_fstream
реализует операции ввода/вывода из потока файла высокого уровня
(шаблон класса)
Реализация ввода/вывода строк
Определено в заголовке <sstream>
basic_stringbuf
реализует физическое устройство строки
(шаблон класса)
basic_istringstream
реализует операции ввода из потока строки высокого уровня
(шаблон класса)
basic_ostringstream
реализует операции вывода в поток строки высокого уровня
(шаблон класса)
basic_stringstream
реализует операции ввода/вывода из потока строки высокого уровня
(шаблон класса)
Реализации ввода/вывода массивов
Определено в заголовке <spanstream>
basic_spanbuf
(C++23)
реализует физическое устройство фиксированного буфера символов
(шаблон класса)
basic_ispanstream
(C++23)
реализует операции ввода из фиксированного буфера символов
(шаблон класса)
basic_ospanstream
(C++23)
реализует операции вывода в фиксированный буфер символов
(шаблон класса)
basic_spanstream
(C++23)
реализует операции ввода/вывода из фиксированного буфера символов
(шаблон класса)
Определено в заголовке <strstream>
strstreambuf
(устарело в C++98)
реализует физическое устройство массива символов
(класс)
istrstream
(устарело в C++98)
реализует операции ввода из массива символов
(класс)
ostrstream
(устарело в C++98)
реализует операции вывода в массив символов
(класс)
strstream
(устарело в C++98)
реализует операции ввода/вывода из массива символов
(класс)
Синхронизированный вывод
Определено в заголовке <syncstream>
basic_syncbuf
(C++20)
оболочка синхронизированного устройства вывода
(шаблон класса)
basic_osyncstream
(C++20)
оболочка синхронизированного потока вывода
(шаблон класса)

Типы-псевдонимы

В пространстве имен std предоставлены следующие типы-псевдонимы для распространенных типов символов:

Тип Определение
Определено в заголовке <ios>
std::ios std::basic_ios<char>
std::wios std::basic_ios<wchar_t>
Определено в заголовке <streambuf>
std::streambuf std::basic_streambuf<char>
std::wstreambuf std::basic_streambuf<wchar_t>
Определено в заголовке <istream>
std::istream std::basic_istream<char>
std::wistream std::basic_istream<wchar_t>
std::iostream std::basic_iostream<char>
std::wiostream std::basic_iostream<wchar_t>
Определено в заголовке <ostream>
std::ostream std::basic_ostream<char>
std::wostream std::basic_ostream<wchar_t>
Определено в заголовке <fstream>
std::filebuf std::basic_filebuf<char>
std::wfilebuf std::basic_filebuf<wchar_t>
std::ifstream std::basic_ifstream<char>
std::wifstream std::basic_ifstream<wchar_t>
std::ofstream std::basic_ofstream<char>
std::wofstream std::basic_ofstream<wchar_t>
std::fstream std::basic_fstream<char>
std::wfstream std::basic_fstream<wchar_t>
Определено в заголовке <sstream>
std::stringbuf std::basic_stringbuf<char>
std::wstringbuf std::basic_stringbuf<wchar_t>
std::istringstream std::basic_istringstream<char>
std::wistringstream std::basic_istringstream<wchar_t>
std::ostringstream std::basic_ostringstream<char>
std::wostringstream std::basic_ostringstream<wchar_t>
std::stringstream std::basic_stringstream<char>
std::wstringstream std::basic_stringstream<wchar_t>
Определено в заголовке <spanstream>
std::spanbuf (C++23) std::basic_spanbuf<char>
std::wspanbuf (C++23) std::basic_spanbuf<wchar_t>
std::ispanstream (C++23) std::basic_ispanstream<char>
std::wispanstream (C++23) std::basic_ispanstream<wchar_t>
std::ospanstream (C++23) std::basic_ospanstream<char>
std::wospanstream (C++23) std::basic_ospanstream<wchar_t>
std::spanstream (C++23) std::basic_spanstream<char>
std::wspanstream (C++23) std::basic_spanstream<wchar_t>
Определено в заголовке <syncstream>
std::syncbuf (C++20) std::basic_syncbuf<char>
END_OF_DOCUMENT_MARKER
std::wsyncbuf (C++20) std::basic_syncbuf<wchar_t>
std::osyncstream (C++20) std::basic_osyncstream<char>
std::wosyncstream (C++20) std::basic_osyncstream<wchar_t>

Предварительно определённые стандартные потоковые объекты

Определено в заголовке <iostream>
cinwcin
считывает из стандартного потока ввода C stdin
(глобальный объект)
coutwcout
записывает в стандартный поток вывода C stdout
(глобальный объект)
cerrwcerr
записывает в стандартный поток ошибок C stderr, небуферизованно
(глобальный объект)
clogwclog
записывает в стандартный поток ошибок C stderr
(глобальный объект)

Операторы манипуляции I/O

Библиотека ввода-вывода на основе потоков использует операторы манипуляции I/O (например, std::boolalpha, std::hex, и т.д.) для управления поведением потоков.

Типы

Определены следующие вспомогательные типы:

Определено в заголовке <ios>
streamoff
представляет относительную позицию файла/потока (смещение от fpos), достаточно для представления любого размера файла
(typedef)
streamsize
представляет количество символов, переданных в операции ввода-вывода, или размер буфера ввода-вывода
(typedef)
fpos
представляет абсолютную позицию в потоке или файле
(шаблон класса)

Предоставлены следующие псевдонимы типов для std::fpos<std::mbstate_t>:

Определено в заголовке <iosfwd>
Тип Определение
std::streampos std::fpos<std::char_traits<char>::state_type>
std::wstreampos std::fpos<std::char_traits<wchar_t>::state_type>
std::u8streampos (C++20) std::fpos<std::char_traits<char8_t>::state_type>
std::u16streampos (C++11) std::fpos<std::char_traits<char16_t>::state_type>
std::u32streampos (C++11) std::fpos<std::char_traits<char32_t>::state_type>

Интерфейс категории ошибок

Определено в заголовке <ios>
io_errc
(C++11)
коды ошибок потоков ввода-вывода
(перечисление)
iostream_category
(C++11)
определяет категорию ошибок iostream
(функция)

Функции вывода (с C++23)

Функции вывода Unicode-совместимой семьи, выполняющие форматированный ввод-вывод на уже отформатированных текстах. Они приносят все преимущества производительности std::format, по умолчанию не зависят от локали, уменьшают глобальное состояние, избегают выделения временного std::string объекта и вызова operator<<, и в целом делают форматирование более эффективным по сравнению с потоками iostream и stdio.

Предоставлены следующие функции, похожие на функции вывода:

Определено в заголовке <print>
print
(C++23)
выводит в stdout или в поток файла с использованием форматированного представления аргументов
(шаблон функции)
println
(C++23)
аналогично std::print за исключением того, что каждый вывод завершается дополнительной новой строкой
(шаблон функции)
vprint_unicode
(C++23)
выводит в Unicode-совместимый stdout или в поток файла с использованием типобезопасного представления аргументов
(функция)
vprint_nonunicode
(C++23)
выводит в stdout или в поток файла с использованием типобезопасного представления аргументов
(функция)
Определено в заголовке <ostream>
print(std::ostream)
(C++23)
выводит форматированное представление аргументов
(шаблон функции)
println(std::ostream)
(C++23)
выводит форматированное представление аргументов с добавленной '\n'
(шаблон функции)

Ввод/вывод в стиле C

В C++ также включены функции ввода/вывода, определенные в C, такие как std::fopen, std::getc, и т. д.

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API