Spec-Zone.ru › C++

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>.

cpp/io/ios base cpp/io/basic ios cpp/io/basic istream cpp/io/basic ostream cpp/io/basic iostreamstd-basic fstream-inheritance.svg

Схема наследования

Предоставляются несколько псевдонимов типов для общих типов символов:

Определено в заголовке <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

Члены-функции

(конструктор)
создаёт поток файлов
(публичная функция-член)
(деструктор)
[virtual] (явным образом объявленная)
удаляет поток файлов и связанный буфер, закрывает файл
(виртуальная публичная функция-член)
operator=
(C++11)
перемещает поток файлов
(публичная функция-член)
swap
(C++11)
меняет местами два потока файлов
(публичная функция-член)
rdbuf
возвращает объект базового устройства файла
(публичная функция-член)
native_handle
(C++26)
возвращает определяемый реализацией дескриптор
(публичная функция-член)
Операции с файлами
is_open
проверяет, ассоциирован ли поток с файлом
(публичная функция-член)
open
открывает файл и связывает его с потоком
(публичная функция-член)
close
закрывает связанный файл
(публичная функция-член)

Функции вне класса

std::swap(std::basic_fstream)
(C++11)
специализация алгоритма std::swap
(шаблон функции)

Унаследованно от std::basic_istream

Члены-функции

Форматированный ввод
operator>>
извлекает отформатированные данные
(публичная функция-член std::basic_istream<CharT,Traits>)
Неформатированный ввод
get
извлекает символы
(публичная функция-член std::basic_istream<CharT,Traits>)
peek
считывает следующий символ без его извлечения
(публичная функция-член std::basic_istream<CharT,Traits>)
unget
возвращает символ обратно в поток ввода
(публичная функция-член std::basic_istream<CharT,Traits>)
putback
помещает символ в поток ввода
(публичная функция-член std::basic_istream<CharT,Traits>)
getline
извлекает символы до тех пор, пока не будет найден заданный символ
(публичная функция-член std::basic_istream<CharT,Traits>)
ignore
извлекает и отбрасывает символы до тех пор, пока не будет найден заданный символ
(публичная функция-член std::basic_istream<CharT,Traits>)
read
извлекает блоки символов
(публичная функция-член std::basic_istream<CharT,Traits>)
readsome
извлекает уже доступные блоки символов
(публичная функция-член std::basic_istream<CharT,Traits>)
gcount
возвращает количество извлеченных символов последней операцией неформатированного ввода
(публичная функция-член std::basic_istream<CharT,Traits>)
Позиционирование
tellg
возвращает указатель на позицию ввода
(публичная функция-член std::basic_istream<CharT,Traits>)
seekg
устанавливает указатель на позицию ввода
(публичная функция-член std::basic_istream<CharT,Traits>)
Разное
sync
синхронизирует с базовым устройством хранения
(публичная функция-член std::basic_istream<CharT,Traits>)

Вложенные классы

sentry
реализует базовые логику подготовки потока для операций ввода
(публичный вложенный класс std::basic_istream<CharT,Traits>)

Унаследованно от std::basic_ostream

Члены-функции

Форматированный вывод
operator<<
вставляет отформатированные данные
(публичная функция-член std::basic_ostream<CharT,Traits>)
Неформатированный вывод
put
вставляет символ
(публичная функция-член std::basic_ostream<CharT,Traits>)
write
вставляет блоки символов
(публичная функция-член std::basic_ostream<CharT,Traits>)
Позиционирование
tellp
возвращает указатель на позицию вывода
(публичная функция-член std::basic_ostream<CharT,Traits>)
seekp
устанавливает указатель на позицию вывода
(публичная функция-член std::basic_ostream<CharT,Traits>)
Разное
flush
синхронизирует с базовым устройством хранения
(публичная функция-член std::basic_ostream<CharT,Traits>)

Вложенные классы

sentry
реализует базовые логику подготовки потока для операций вывода
(публичный вложенный класс 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

Члены-функции

Функции состояния
good
проверяет, не произошло ли ошибки, т.е. доступны операции ввода-вывода
(публичный член-функция std::basic_ios<CharT,Traits>)
eof
проверяет, достигнут ли конец файла
(публичный член-функция std::basic_ios<CharT,Traits>)
fail
проверяет, произошла ли ошибка
(публичный член-функция std::basic_ios<CharT,Traits>)
bad
проверяет, произошла ли неисправимая ошибка
(публичный член-функция std::basic_ios<CharT,Traits>)
operator!
проверяет, произошла ли ошибка (синоним fail())
(публичный член-функция std::basic_ios<CharT,Traits>)
operator bool
проверяет, не произошла ли ошибка (синоним !fail())
(публичный член-функция std::basic_ios<CharT,Traits>)
rdstate
возвращает флаги состояния
(публичный член-функция std::basic_ios<CharT,Traits>)
setstate
устанавливает флаги состояния
(публичный член-функция std::basic_ios<CharT,Traits>)
clear
изменяет флаги состояния
(публичный член-функция std::basic_ios<CharT,Traits>)
Форматирование
copyfmt
копирует информацию о форматировании
(публичный член-функция std::basic_ios<CharT,Traits>)
fill
управляет символом заполнения
(публичный член-функция std::basic_ios<CharT,Traits>)
Разное
exceptions
управляет маской исключений
(публичный член-функция std::basic_ios<CharT,Traits>)
imbue
устанавливает локаль
(публичный член-функция std::basic_ios<CharT,Traits>)
rdbuf
управляет связанным буфером потока
(публичный член-функция std::basic_ios<CharT,Traits>)
tie
управляет связанным потоком
(публичный член-функция std::basic_ios<CharT,Traits>)
narrow
сужает символы
(публичный член-функция std::basic_ios<CharT,Traits>)
widen
расширяет символы
(публичный член-функция std::basic_ios<CharT,Traits>)

Наследуется от std::ios_base

Члены-функции

Форматирование
flags
управляет флагами форматирования
(публичный член-функция std::ios_base)
setf
устанавливает конкретный флаг форматирования
(публичный член-функция std::ios_base)
unsetf
сбрасывает конкретный флаг форматирования
(публичный член-функция std::ios_base)
precision
управляет десятичной точностью операций с плавающей точкой
(публичный член-функция std::ios_base)
width
управляет шириной поля
(публичный член-функция std::ios_base)
Локали
imbue
устанавливает локаль
(публичный член-функция std::ios_base)
getloc
возвращает текущую локаль
(публичный член-функция std::ios_base)
Внутренний расширяемый массив
xalloc
[static]
возвращает уникальное целое число, безопасное для использования в качестве индекса для pword() и iword()
(публичная статическая член-функция std::ios_base)
iword
при необходимости изменяет размер личного хранилища и предоставляет доступ к элементу типа long по заданному индексу
(публичный член-функция std::ios_base)
pword
при необходимости изменяет размер личного хранилища и предоставляет доступ к элементу типа void* по заданному индексу
(публичный член-функция std::ios_base)
Разное
register_callback
регистрирует функцию обратного вызова события
(публичный член-функция std::ios_base)
sync_with_stdio
[static]
устанавливает, будут ли C++ и C библиотеки ввода-вывода взаимодействовать
(публичная статическая член-функция std::ios_base)
Вложенные классы
failure
исключение потока
(публичный вложенный класс std::ios_base)
Init
инициализирует стандартные объекты потока
(публичный вложенный класс std::ios_base)

Типы и константы членов

Тип Объяснение
openmode
тип режима открытия потока

Также определены следующие константы:

Константа Объяснение
app перемещение к концу потока перед каждым записыванием
binary открытие в бинарном режиме
in открытие для чтения
out открытие для записи
trunc удаление содержимого потока при открытии
ate перемещение к концу потока сразу после открытия
noreplace (C++23) открытие в эксклюзивном режиме

(typedef)
fmtflags
тип флагов форматирования

Также определены следующие константы:

Константа Объяснение
dec использование десятичной системы для целочисленных ввода/вывода: см. std::dec
oct использование восьмеричной системы для целочисленных ввода/вывода: см. std::oct
hex использование шестнадцатеричной системы для целочисленных ввода/вывода: см. std::hex
basefield dec | oct | hex. Полезно для операций маскирования
left левое выравнивание (добавляет символы заполнения справа): см. std::left
right правое выравнивание (добавляет символы заполнения слева): см. std::right
internal внутреннее выравнивание (добавляет символы заполнения к внутренней заданной точке): см. std::internal
adjustfield left | right | internal. Полезно для операций маскирования
scientific формирование чисел с плавающей точкой в научной или шестнадцатеричной нотации (если сочетается с fixed) : см. std::scientific
fixed формирование чисел с плавающей точкой в фиксированной нотации или шестнадцатеричной нотации (если сочетается с scientific) : см. std::fixed
floatfield scientific | fixed. Полезно для операций маскирования
boolalpha вставка и извлечение типа bool в буквенно-цифровом формате: см. std::boolalpha
showbase формирование префикса, указывающего на систему счисления для целочисленного вывода, требуются знаки валюты при денежном вводе/выводе: см. std::showbase
showpoint безусловное формирование десятичной точки для вывода чисел с плавающей точкой: см. std::showpoint
showpos формирование символа + для неотрицательных чисел вывода: см. std::showpos
skipws пропуск начальных пробелов перед определёнными операциями ввода: см. std::skipws
unitbuf сброс вывода после каждой операции вывода: см. std::unitbuf
uppercase замена некоторых строчных букв на их прописные аналоги в определённых операциях вывода: см. std::uppercase

(typedef)
iostate
тип состояния потока

Также определены следующие константы:

Константа Объяснение
goodbit без ошибок
badbit неисправимая ошибка потока
failbit операция ввода/вывода завершилась неудачно (ошибка форматирования или извлечения)
eofbit связанная последовательность ввода достигла конца файла

(typedef)
seekdir
тип направления поиска

Также определены следующие константы:

Константа Объяснение
beg начало потока
end конец потока
cur текущая позиция указателя позиции потока

(typedef)
event
определяет тип события
(перечисление)
event_callback
тип обратной функции
(typedef)

Примечания

Макрокоманда проверки наличия функции Значение Std Функция
__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

См. также

getline
чтение данных из потока ввода/вывода в строку
(шаблон функции)

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

Spec-Zone.ru

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