Spec-Zone.ru › C++

std::basic_ofstream

Определено в заголовке <fstream>
template<
    class CharT,
    class Traits = std::char_traits<CharT>
> class basic_ofstream : public std::basic_ostream<CharT, Traits>

Шаблон класса basic_ofstream реализует операции вывода высокого уровня для потоков, связанных с файлами. Он связывает буфер потока, связанный с файлом (std::basic_filebuf), с интерфейсом высокого уровня (std::basic_ostream).

Типичная реализация std::basic_ofstream содержит только один член данных без наследования: экземпляр std::basic_filebuf<CharT, Traits>.

cpp/io/ios base cpp/io/basic ios cpp/io/basic ostreamstd-basic ofstream-inheritance.svg

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

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

Определено в заголовке <fstream>
Тип Определение
std::ofstream std::basic_ofstream<char>
std::wofstream std::basic_ofstream<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_ofstream и связанный буфер, закрывает файл
(виртуальная общедоступная функция-член)
operator=
(C++11)
перемещает поток файла
(общедоступная функция-член)
swap
(C++11)
меняет местами два потока файлов
(общедоступная функция-член)
rdbuf
возвращает объект исходного устройства файла
(общедоступная функция-член)
native_handle
(C++26)
возвращает определяемый реализацией дескриптор
(общедоступная функция-член)
Операции с файлами
is_open
проверяет, есть ли у потока связанный файл
(общедоступная функция-член)
open
открывает файл и связывает его с потоком
(общедоступная функция-член)
close
закрывает связанный файл
(общедоступная функция-член)

Функции без указания класса

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

Наследуется от 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)
END_OF_DOCUMENT_MARKER

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

Тип Объяснение
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
Указывает тип события
(enum)
event_callback
Тип обратного вызова функции
(typedef)

Примечания

Макрос проверки наличия функции Значение Std Функция
__cpp_lib_fstream_native_handle 202306L (C++26) Поддержка нативных дескрипторов

Пример

#include <fstream>
#include <iostream>
#include <string>
 
int main()
{
    std::string filename = "Test.b";
    {
        std::ofstream ostrm(filename, std::ios::binary);
        double d = 3.14;
        ostrm.write(reinterpret_cast<char*>(&d), sizeof d); // binary output
        ostrm << 123 << "abc" << '\n';                      // text output
    }
 
    // read back
    std::ifstream istrm(filename, std::ios::binary);
    double d;
    istrm.read(reinterpret_cast<char*>(&d), sizeof d);
    int n;
    std::string s;
    istrm >> n >> s;
    std::cout << " read back: " << d << ' ' << n << ' ' << s << '\n';
}

Вывод:

read back: 3.14 123 abc

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

Spec-Zone.ru

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