Namespaces
Variants

std::basic_ofstream<CharT,Traits>:: basic_ofstream

From cppreference.net

basic_ofstream ( ) ;
(1)
explicit basic_ofstream ( const char * filename,

std:: ios_base :: openmode mode

= std:: ios_base :: out ) ;
(2)
explicit basic_ofstream ( const std :: filesystem :: path :: value_type * filename,

std:: ios_base :: openmode mode

= std:: ios_base :: out ) ;
(3) (начиная с C++17)
explicit basic_ofstream ( const std:: string & filename,

std:: ios_base :: openmode mode

= std:: ios_base :: out ) ;
(4) (начиная с C++11)
template < class FsPath >

explicit basic_ofstream ( const FsPath & filename,
std:: ios_base :: openmode mode

= std:: ios_base :: out ) ;
(5) (начиная с C++17)
basic_ofstream ( basic_ofstream && other ) ;
(6) (начиная с C++11)
basic_ofstream ( const basic_ofstream & rhs ) = delete ;
(7) (начиная с C++11)

Создает новый файловый поток.

1) Конструктор по умолчанию: создаёт поток, не ассоциированный с файлом: создаёт по умолчанию std::basic_filebuf и конструирует базовый класс с указателем на этот созданный по умолчанию std::basic_filebuf член.
2,3) Сначала выполняет те же шаги, что и конструктор по умолчанию, затем связывает поток с файлом, вызывая rdbuf ( ) - > open ( filename, mode | std:: ios_base :: out ) (см. std::basic_filebuf::open для подробностей о последствиях этого вызова). Если вызов open() возвращает нулевой указатель, устанавливает setstate ( failbit ) . Перегрузка (3) предоставляется только если std :: filesystem :: path :: value_type не является char . (since C++17)
4,5) То же, что basic_ofstream ( filename. c_str ( ) , mode ) . (5) участвует в разрешении перегрузки только если FsPath является std::filesystem::path . (начиная с C++17) Обратите внимание, что несмотря на режим по умолчанию out , эффекты идентичны эффектам out | trunc как описано в std::filebuf::open
6) Конструктор перемещения. Сначала перемещающе конструирует базовый класс из other (что не влияет на указатель rdbuf() ), затем перемещающе конструирует член std::basic_filebuf , затем вызывает this - > set_rdbuf ( ) чтобы установить новый basic_filebuf в качестве указателя rdbuf() в базовом классе.
7) Конструктор копирования удален: этот класс не поддерживает копирование.

Содержание

Параметры

filename - имя файла для открытия
mode - определяет режим открытия потока. Могут использоваться следующие константы и их побитовое ИЛИ:
Constant Explanation
app переход в конец потока перед каждой записью
binary открытие в бинарном режиме
in открытие для чтения
out открытие для записи
trunc очистка содержимого потока при открытии
ate переход в конец потока сразу после открытия
noreplace (C++23) открытие в эксклюзивном режиме
other - другой файловый поток для использования в качестве источника

Пример

#include <fstream>
#include <string>
#include <utility>
int main()
{
    std::ofstream f0;
    std::ofstream f1("test.bin", std::ios::binary);
    std::string name = "example.txt";
    std::ofstream f2(name);
    std::ofstream f3(std::move(f1));
}

Отчеты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 3430 C++17 std::filesystem::path overload led to unwanted conversions avoided by making it a template

Смотрите также

открывает файл и связывает его с потоком
(публичная функция-член)
открывает файл и настраивает его как связанную символьную последовательность
(публичная функция-член std::basic_filebuf<CharT,Traits> )
заменяет rdbuf без очистки его состояния ошибки
(защищённая функция-член)
конструирует объект
(публичная функция-член std::basic_ostream<CharT,Traits> )