Spec-Zone.ru › C++

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

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.(начиная с 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 - задаёт режим открытия потока. Можно использовать следующие константы и побитовое ИЛИ между ними:
Константа Описание
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++.

Отчёт об ошибке Применён к Опубликованное поведение Корректное поведение
LWG 3430 C++17 std::filesystem::path перегрузка приводила к нежелательным преобразованиям предотвращено превращением её в шаблон

См. также

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

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

Spec-Zone.ru

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