std::basic_fstream
Определён в заголовочном файле <fstream> | ||
|---|---|---|
template<
class CharT,
class Traits = std::char_traits<CharT>
> class basic_fstream : public std::basic_iostream<CharT, Traits>
|
Шаблон класса basic_fstream реализует высокоуровневые операции ввода-вывода для потоков, основанных на файлах. Он связывает файловый буфер потока (std::basic_filebuf) с высокоуровневым интерфейсом (std::basic_iostream).
Типичная реализация std::basic_fstream содержит только один нестатический член данных, не являющийся базовым классом: экземпляр std::basic_filebuf<CharT,Traits>.
Диаграмма наследования
Предоставляется несколько псевдонимов типов для распространённых типов символов:
Определён в заголовочном файле <fstream> |
|
|---|---|
| Тип | Определение |
std::fstream | std::basic_fstream<char> |
std::wfstream | std::basic_fstream<wchar_t> |
Типы-члены
| Тип-член | Определение |
|---|---|
char_type |
CharT |
traits_type |
Traits; программа некорректна, если Traits::char_type не является CharT. |
int_type |
Traits::int_type |
pos_type |
Traits::pos_type |
off_type |
Traits::off_type |
native_handle_type(C++26) |
тип, определяемый реализацией, который является TriviallyCopyable и semiregular |
Функции-члены
| создаёт файловый поток (открытая функция-член) |
|
|
(деструктор)
[виртуальная] (объявлена неявно) | уничтожает basic_fstream и связанный буфер, закрывает файл (виртуальная открытая функция-член) |
|
(C++11) | перемещает файловый поток (открытая функция-член) |
|
(C++11) | обменивает местами два файловых потока (открытая функция-член) |
| возвращает объект нижележащего файлового устройства (открытая функция-член) |
|
|
(C++26) | возвращает дескриптор, определяемый реализацией (открытая функция-член) |
Операции с файлами |
|
| проверяет, связан ли с потоком файл (открытая функция-член) |
|
| открывает файл и связывает его с потоком (открытая функция-член) |
|
| закрывает связанный файл (открытая функция-член) |
|
Функции, не являющиеся членами
|
(C++11) | специализирует алгоритм std::swap (шаблон функции) |
Унаследовано от std::basic_istream
Функции-члены
Форматированный ввод |
|
| извлекает форматированные данные (открытая функция-член std::basic_istream<CharT,Traits>) |
|
Неформатированный ввод |
|
| извлекает символы (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| читает следующий символ, не извлекая его (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| возвращает символ во входной поток (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| помещает символ во входной поток (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| извлекает символы до обнаружения заданного символа (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| извлекает и отбрасывает символы до обнаружения заданного символа (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| извлекает блоки символов (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| извлекает уже доступные блоки символов (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| возвращает количество символов, извлечённых последней операцией неформатированного ввода (открытая функция-член std::basic_istream<CharT,Traits>) |
|
Позиционирование |
|
| возвращает указатель позиции ввода (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| устанавливает указатель позиции ввода (открытая функция-член std::basic_istream<CharT,Traits>) |
|
Разное |
|
| синхронизируется с нижележащим устройством хранения данных (открытая функция-член std::basic_istream<CharT,Traits>) |
|
Классы-члены
| реализует базовую логику подготовки потока к операциям ввода (открытый класс-член std::basic_istream<CharT,Traits>) |
Унаследовано от std::basic_ostream
Функции-члены
Форматированный вывод |
|
| вставляет форматированные данные (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
Неформатированный вывод |
|
| вставляет символ (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
| вставляет блоки символов (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
Позиционирование |
|
| возвращает указатель позиции вывода (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
| устанавливает указатель позиции вывода (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
Разное |
|
| синхронизируется с нижележащим устройством хранения данных (открытая функция-член std::basic_ostream<CharT,Traits>) |
|
Классы-члены
| реализует базовую логику подготовки потока к операциям вывода (открытый класс-член std::basic_ostream<CharT,Traits>) |
Унаследовано от std::basic_ios
Типы-члены
| Тип-член | Определение |
|---|---|
char_type |
CharT |
traits_type |
Traits |
int_type |
Traits::int_type |
pos_type |
Traits::pos_type |
off_type |
Traits::off_type |
Функции-члены
Функции состояния |
|
| проверяет, не произошла ли ошибка, то есть доступны ли операции ввода-вывода (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| проверяет, достигнут ли конец файла (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| проверяет, произошла ли ошибка (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| проверяет, произошла ли неустранимая ошибка (открытая функция-член std::basic_ios<CharT,Traits>) |
|
проверяет, произошла ли ошибка (синоним fail()) (открытая функция-член std::basic_ios<CharT,Traits>) |
|
проверяет, не произошла ли ошибка (синоним !fail()) (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| возвращает флаги состояния (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| устанавливает флаги состояния (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| изменяет флаги состояния (открытая функция-член std::basic_ios<CharT,Traits>) |
|
Форматирование |
|
| копирует сведения о форматировании (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| управляет символом заполнения (открытая функция-член std::basic_ios<CharT,Traits>) |
|
Разное |
|
| управляет маской исключений (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| устанавливает локаль (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| управляет связанным буфером потока (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| управляет связанным потоком (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| преобразует символы в узкие символы (открытая функция-член std::basic_ios<CharT,Traits>) |
|
| преобразует символы в широкие символы (открытая функция-член std::basic_ios<CharT,Traits>) |
|
Унаследовано от std::ios_base
Функции-члены
Форматирование |
|
| управляет флагами форматирования (открытая функция-член std::ios_base) |
|
| устанавливает заданный флаг форматирования (открытая функция-член std::ios_base) |
|
| сбрасывает заданный флаг форматирования (открытая функция-член std::ios_base) |
|
| управляет десятичной точностью операций с числами с плавающей точкой (открытая функция-член std::ios_base) |
|
| управляет шириной поля (открытая функция-член std::ios_base) |
|
Локали |
|
| устанавливает локаль (открытая функция-член std::ios_base) |
|
| возвращает текущую локаль (открытая функция-член std::ios_base) |
|
Внутренний расширяемый массив |
|
|
[статическая] | возвращает уникальное для всей программы целое число, которое можно безопасно использовать в качестве индекса для pword() и iword() (открытая статическая функция-член std::ios_base) |
| при необходимости увеличивает размер приватного хранилища и предоставляет доступ к элементу типа long с заданным индексом (открытая функция-член std::ios_base) |
|
| при необходимости увеличивает размер приватного хранилища и предоставляет доступ к элементу типа void* с заданным индексом (открытая функция-член std::ios_base) |
|
Разное |
|
| регистрирует функцию обратного вызова события (открытая функция-член std::ios_base) |
|
|
[статическая] | задаёт, могут ли библиотеки ввода-вывода C++ и C взаимодействовать друг с другом (открытая статическая функция-член std::ios_base) |
Классы-члены |
|
| исключение потока (открытый класс-член std::ios_base) |
|
| инициализирует стандартные объекты потоков (открытый класс-член std::ios_base) |
|
Типы и константы-члены |
|||||||||||||||||||||||||||||||||||||||
| Тип | Пояснение | ||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| тип режима открытия потока Также определены следующие константы:
(псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
| тип флагов форматирования Также определены следующие константы:
(псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
| тип состояния потока Также определены следующие константы:
(псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
| тип направления перемещения Также определены следующие константы:
(псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
| задаёт тип события (перечисление) |
|||||||||||||||||||||||||||||||||||||||
| тип функции обратного вызова (псевдоним типа) |
|||||||||||||||||||||||||||||||||||||||
Примечания
| Макрос проверки поддержки возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_fstream_native_handle | 202306L | (C++26) | поддержка нативных дескрипторов |
Пример
#include <fstream>
#include <iostream>
#include <string>
int main()
{
std::string filename{"test.bin"};
std::fstream s{filename, s.binary | s.trunc | s.in | s.out};
if (!s.is_open())
std::cout << "failed to open " << filename << '\n';
else
{
// write
double d{3.14};
s.write(reinterpret_cast<char*>(&d), sizeof d); // binary output
s << 123 << "abc"; // text output
// for fstream, this moves the file position pointer (both put and get)
s.seekp(0);
// read
d = 2.71828;
s.read(reinterpret_cast<char*>(&d), sizeof d); // binary input
int n;
std::string str;
if (s >> n >> str) // text input
std::cout << "read back from file: " << d << ' ' << n << ' ' << str << '\n';
}
}
Вывод:
read back from file: 3.14 123 abc
См. также
| считывает данные из потока ввода-вывода в строку (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_fstream