std::basic_fstream
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <fstream>
  | 
||
|   template<     class CharT,  | 
||
The class template basic_fstream implements high-level input/output operations on file based streams. It interfaces a file-based streambuffer (std::basic_filebuf) with the high-level interface of (std::basic_iostream).
A typical implementation of std::basic_fstream holds only one non-derived data member: an instance of std::basic_filebuf<CharT, Traits>.
Inheritance diagram
Several typedefs for common character types are provided:
|   Defined in header  
<fstream>  | |
| Type | Definition | 
 std::fstream
 | 
std::basic_fstream<char> | 
 std::wfstream
 | 
std::basic_fstream<wchar_t> | 
Member types
| Member type | Definition | 
 char_type
 | 
 CharT | 
 traits_type
 | 
 Traits; the program is ill-formed if Traits::char_type is not CharT. | 
 int_type
 | 
 Traits::int_type | 
 pos_type
 | 
 Traits::pos_type | 
 off_type
 | 
 Traits::off_type | 
 native_handle_type(C++26)
 | 
 implementation-defined type that is TriviallyCopyable and semiregular | 
Member functions
|   constructs the file stream  (public member function)  | |
|    (destructor) [virtual] (implicitly declared)  | 
  destructs the basic_fstream and the associated buffer, closes the file (virtual public member function)  | 
|    (C++11)  | 
  moves the file stream  (public member function)  | 
|    (C++11)  | 
  swaps two file streams  (public member function)  | 
|   returns the underlying raw file device object  (public member function)  | |
|    (C++26)  | 
  returns the underlying implementation-defined handle  (public member function)  | 
 File operations | |
|   checks if the stream has an associated file  (public member function)  | |
|   opens a file and associates it with the stream  (public member function)  | |
|   closes the associated file  (public member function)  | |
Non-member functions
|   specializes the std::swap algorithm  (function template)  | 
Inherited from std::basic_istream
Member functions
 Formatted input | |
|   extracts formatted data  (public member function of std::basic_istream<CharT,Traits>)  | |
 Unformatted input | |
|   extracts characters  (public member function of std::basic_istream<CharT,Traits>)  | |
|   reads the next character without extracting it  (public member function of std::basic_istream<CharT,Traits>)  | |
|   unextracts a character  (public member function of std::basic_istream<CharT,Traits>)  | |
|   puts a character into input stream  (public member function of std::basic_istream<CharT,Traits>)  | |
|   extracts characters until the given character is found  (public member function of std::basic_istream<CharT,Traits>)  | |
|   extracts and discards characters until the given character is found  (public member function of std::basic_istream<CharT,Traits>)  | |
|   extracts blocks of characters  (public member function of std::basic_istream<CharT,Traits>)  | |
|   extracts already available blocks of characters  (public member function of std::basic_istream<CharT,Traits>)  | |
|   returns number of characters extracted by last unformatted input operation  (public member function of std::basic_istream<CharT,Traits>)  | |
 Positioning | |
|   returns the input position indicator  (public member function of std::basic_istream<CharT,Traits>)  | |
|   sets the input position indicator  (public member function of std::basic_istream<CharT,Traits>)  | |
 Miscellaneous | |
|   synchronizes with the underlying storage device  (public member function of std::basic_istream<CharT,Traits>)  | |
Member classes
|   implements basic logic for preparation of the stream for input operations  (public member class of std::basic_istream<CharT,Traits>)  | 
Inherited from std::basic_ostream
Member functions
 Formatted output | |
|   inserts formatted data  (public member function of std::basic_ostream<CharT,Traits>)  | |
 Unformatted output | |
|   inserts a character  (public member function of std::basic_ostream<CharT,Traits>)  | |
|   inserts blocks of characters  (public member function of std::basic_ostream<CharT,Traits>)  | |
 Positioning | |
|   returns the output position indicator  (public member function of std::basic_ostream<CharT,Traits>)  | |
|   sets the output position indicator  (public member function of std::basic_ostream<CharT,Traits>)  | |
 Miscellaneous | |
|   synchronizes with the underlying storage device  (public member function of std::basic_ostream<CharT,Traits>)  | |
Member classes
|   implements basic logic for preparation of the stream for output operations  (public member class of std::basic_ostream<CharT,Traits>)  | 
Inherited from std::basic_ios
Member types
| Member type | Definition | 
 char_type
 | 
 CharT
 | 
 traits_type
 | 
 Traits
 | 
 int_type
 | 
 Traits::int_type
 | 
 pos_type
 | 
 Traits::pos_type
 | 
 off_type
 | 
 Traits::off_type
 | 
Member functions
 State functions | |
|   checks if no error has occurred i.e. I/O operations are available  (public member function of std::basic_ios<CharT,Traits>)  | |
|   checks if end-of-file has been reached  (public member function of std::basic_ios<CharT,Traits>)  | |
|   checks if an error has occurred  (public member function of std::basic_ios<CharT,Traits>)  | |
|   checks if a non-recoverable error has occurred  (public member function of std::basic_ios<CharT,Traits>)  | |
|   checks if an error has occurred (synonym of fail())  (public member function of std::basic_ios<CharT,Traits>)  | |
  checks if no error has occurred (synonym of !fail()) (public member function of std::basic_ios<CharT,Traits>)  | |
|   returns state flags  (public member function of std::basic_ios<CharT,Traits>)  | |
|   sets state flags  (public member function of std::basic_ios<CharT,Traits>)  | |
|   modifies state flags  (public member function of std::basic_ios<CharT,Traits>)  | |
 Formatting | |
|   copies formatting information  (public member function of std::basic_ios<CharT,Traits>)  | |
|   manages the fill character  (public member function of std::basic_ios<CharT,Traits>)  | |
 Miscellaneous | |
|   manages exception mask  (public member function of std::basic_ios<CharT,Traits>)  | |
|   sets the locale  (public member function of std::basic_ios<CharT,Traits>)  | |
|   manages associated stream buffer  (public member function of std::basic_ios<CharT,Traits>)  | |
|   manages tied stream  (public member function of std::basic_ios<CharT,Traits>)  | |
|   narrows characters  (public member function of std::basic_ios<CharT,Traits>)  | |
|   widens characters  (public member function of std::basic_ios<CharT,Traits>)  | |
Inherited from std::ios_base
Member functions
 Formatting | |
|   manages format flags  (public member function of std::ios_base)  | |
|   sets specific format flag  (public member function of std::ios_base)  | |
|   clears specific format flag  (public member function of std::ios_base)  | |
|   manages decimal precision of floating point operations  (public member function of std::ios_base)  | |
|   manages field width  (public member function of std::ios_base)  | |
 Locales | |
|   sets locale  (public member function of std::ios_base)  | |
|   returns current locale  (public member function of std::ios_base)  | |
 Internal extensible array | |
|    [static]  | 
  returns a program-wide unique integer that is safe to use as index to pword() and iword()  (public static member function of std::ios_base)  | 
|   resizes the private storage if necessary and access to the long element at the given index  (public member function of std::ios_base)  | |
|   resizes the private storage if necessary and access to the void* element at the given index  (public member function of std::ios_base)  | |
 Miscellaneous | |
|   registers event callback function  (public member function of std::ios_base)  | |
|    [static]  | 
  sets whether C++ and C I/O libraries are interoperable  (public static member function of std::ios_base)  | 
 Member classes | |
|   stream exception  (public member class of std::ios_base)  | |
|   initializes standard stream objects  (public member class of std::ios_base)  | |
 Member types and constants | |||||||||||||||||||||||||||||||||||||||
| Type | Explanation | ||||||||||||||||||||||||||||||||||||||
|   stream open mode type
 The following constants are also defined: 
 (typedef)  | |||||||||||||||||||||||||||||||||||||||
|   formatting flags type
 The following constants are also defined: 
 (typedef)  | |||||||||||||||||||||||||||||||||||||||
|   state of the stream type
 The following constants are also defined: 
 (typedef)  | |||||||||||||||||||||||||||||||||||||||
|   seeking direction type
 The following constants are also defined: 
 (typedef)  | |||||||||||||||||||||||||||||||||||||||
|   specifies event type  (enum)  | |||||||||||||||||||||||||||||||||||||||
|   callback function type  (typedef)  | |||||||||||||||||||||||||||||||||||||||
Notes
| Feature-test macro | Value | Std | Feature | 
|---|---|---|---|
__cpp_lib_fstream_native_handle | 
202306L | 
(C++26) | native handles support | 
Example
Run this code
#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'; } }
Output:
read back from file: 3.14 123 abc
See also
|   read data from an I/O stream into a string  (function template)  |