[ofstream.cons] # 31 Input/output library [[input.output]](./#input.output) ## 31.10 File-based streams [[file.streams]](file.streams#ofstream.cons) ### 31.10.5 Class template basic_ofstream [[ofstream]](ofstream#cons) #### 31.10.5.2 Constructors [ofstream.cons] [🔗](#lib:basic_ofstream,constructor) `basic_ofstream(); ` [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L12102) *Effects*: Initializes the base class withbasic_ostream(addressof(*sb*)) ([[ostream.cons]](ostream.cons "31.7.6.2.2 Constructors")) and *sb* withbasic_filebuf() ([[filebuf.cons]](filebuf.cons "31.10.3.2 Constructors"))[.](#1.sentence-1) [🔗](#lib:basic_ofstream,constructor_) `explicit basic_ofstream(const char* s, ios_base::openmode mode = ios_base::out); explicit basic_ofstream(const filesystem::path::value_type* s, ios_base::openmode mode = ios_base::out); // wide systems only; see [[fstream.syn]](fstream.syn "31.10.1 Header synopsis") ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L12119) *Effects*: Initializes the base class withbasic_ostream(addressof(*sb*)) ([[ostream.cons]](ostream.cons "31.7.6.2.2 Constructors")) and *sb* withbasic_filebuf() ([[filebuf.cons]](filebuf.cons "31.10.3.2 Constructors")), then callsrdbuf()->open(s, mode | ios_base​::​out)[.](#2.sentence-1) If that function returns a null pointer, callssetstate(​failbit)[.](#2.sentence-2) [🔗](#lib:basic_ofstream,constructor__) `explicit basic_ofstream(const string& s, ios_base::openmode mode = ios_base::out); ` [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L12138) *Effects*: Equivalent to basic_ofstream(s.c_str(), mode)[.](#3.sentence-1) [🔗](#lib:basic_ofstream,constructor___) `template explicit basic_ofstream(const T& s, ios_base::openmode mode = ios_base::out); ` [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L12150) *Constraints*: is_same_v is true[.](#4.sentence-1) [5](#5) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L12154) *Effects*: Equivalent to basic_ofstream(s.c_str(), mode)[.](#5.sentence-1) [🔗](#lib:basic_ofstream,constructor____) `basic_ofstream(basic_ofstream&& rhs); ` [6](#6) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L12165) *Effects*: Move constructs the base class, and the contained basic_filebuf[.](#6.sentence-1) Then calls basic_ostream​::​set_rdbuf(​addressof(*sb*)) to install the contained basic_filebuf[.](#6.sentence-2)