std::basic_ifstream - cppreference.com (original) (raw)

The class template basic_ifstream implements high-level input operations on file-based streams. It interfaces a file-based streambuffer (std::basic_filebuf) with the high-level interface of (std::basic_istream).

A typical implementation of std::basic_ifstream holds only one non-derived data member: an instance of std::basic_filebuf<CharT, Traits>.

std-basic ifstream-inheritance.svg

Inheritance diagram

Several typedefs for common character types are provided:

Type Definition
std::ifstream std::basic_ifstream<char>
std::wifstream std::basic_ifstream<wchar_t>

Contents

[edit] Member types

Member type Definition
char_type CharT[edit]
traits_type Traits; the program is ill-formed if Traits::char_type is not CharT.[edit]
int_type Traits::int_type[edit]
pos_type Traits::pos_type[edit]
off_type Traits::off_type[edit]
native_handle_type(C++26) implementation-defined type that is TriviallyCopyable and semiregular[edit]

[edit] Member functions

(constructor) constructs the file stream (public member function) [edit]
(destructor)[virtual] (implicitly declared) destructs the basic_ifstream and the associated buffer, closes the file (virtual public member function) [edit]
operator=(C++11) moves the file stream (public member function) [edit]
swap(C++11) swaps two file streams (public member function) [edit]
rdbuf returns the underlying raw file device object (public member function) [edit]
native_handle(C++26) returns the underlying implementation-defined handle (public member function) [edit]
File operations
is_open checks if the stream has an associated file (public member function) [edit]
open opens a file and associates it with the stream (public member function) [edit]
close closes the associated file (public member function) [edit]

[edit] Non-member functions

Inherited from std::basic_istream

Member functions

Formatted input
operator>> extracts formatted data (public member function of std::basic_istream<CharT,Traits>) [edit]
Unformatted input
get extracts characters (public member function of std::basic_istream<CharT,Traits>) [edit]
peek reads the next character without extracting it (public member function of std::basic_istream<CharT,Traits>) [edit]
unget unextracts a character (public member function of std::basic_istream<CharT,Traits>) [edit]
putback puts a character into input stream (public member function of std::basic_istream<CharT,Traits>) [edit]
getline extracts characters until the given character is found (public member function of std::basic_istream<CharT,Traits>) [edit]
ignore extracts and discards characters until the given character is found (public member function of std::basic_istream<CharT,Traits>) [edit]
read extracts blocks of characters (public member function of std::basic_istream<CharT,Traits>) [edit]
readsome extracts already available blocks of characters (public member function of std::basic_istream<CharT,Traits>) [edit]
gcount returns number of characters extracted by last unformatted input operation (public member function of std::basic_istream<CharT,Traits>) [edit]
Positioning
tellg returns the input position indicator (public member function of std::basic_istream<CharT,Traits>) [edit]
seekg sets the input position indicator (public member function of std::basic_istream<CharT,Traits>) [edit]
Miscellaneous
sync synchronizes with the underlying storage device (public member function of std::basic_istream<CharT,Traits>) [edit]

Member classes

| | implements basic logic for preparation of the stream for input operations (public member class of std::basic_istream<CharT,Traits>) [edit] | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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
good checks if no error has occurred i.e. I/O operations are available (public member function of std::basic_ios<CharT,Traits>) [edit]
eof checks if end-of-file has been reached (public member function of std::basic_ios<CharT,Traits>) [edit]
fail checks if an error has occurred (public member function of std::basic_ios<CharT,Traits>) [edit]
bad checks if a non-recoverable error has occurred (public member function of std::basic_ios<CharT,Traits>) [edit]
operator! checks if an error has occurred (synonym of fail()) (public member function of std::basic_ios<CharT,Traits>) [edit]
operator bool checks if no error has occurred (synonym of fail()) (public member function of std::basic_ios<CharT,Traits>) [edit]
rdstate returns state flags (public member function of std::basic_ios<CharT,Traits>) [edit]
setstate sets state flags (public member function of std::basic_ios<CharT,Traits>) [edit]
clear modifies state flags (public member function of std::basic_ios<CharT,Traits>) [edit]
Formatting
copyfmt copies formatting information (public member function of std::basic_ios<CharT,Traits>) [edit]
fill manages the fill character (public member function of std::basic_ios<CharT,Traits>) [edit]
Miscellaneous
exceptions manages exception mask (public member function of std::basic_ios<CharT,Traits>) [edit]
imbue sets the locale (public member function of std::basic_ios<CharT,Traits>) [edit]
rdbuf manages associated stream buffer (public member function of std::basic_ios<CharT,Traits>) [edit]
tie manages tied stream (public member function of std::basic_ios<CharT,Traits>) [edit]
narrow narrows characters (public member function of std::basic_ios<CharT,Traits>) [edit]
widen widens characters (public member function of std::basic_ios<CharT,Traits>) [edit]

Inherited from std::ios_base

Member functions

Formatting
flags manages format flags (public member function of std::ios_base) [edit]
setf sets specific format flag (public member function of std::ios_base) [edit]
unsetf clears specific format flag (public member function of std::ios_base) [edit]
precision manages decimal precision of floating point operations (public member function of std::ios_base) [edit]
width manages field width (public member function of std::ios_base) [edit]
Locales
imbue sets locale (public member function of std::ios_base) [edit]
getloc returns current locale (public member function of std::ios_base) [edit]
Internal extensible array
xalloc[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) [edit]
iword resizes the private storage if necessary and access to the long element at the given index (public member function of std::ios_base) [edit]
pword resizes the private storage if necessary and access to the void* element at the given index (public member function of std::ios_base) [edit]
Miscellaneous
register_callback registers event callback function (public member function of std::ios_base) [edit]
sync_with_stdio[static] sets whether C++ and C I/O libraries are interoperable (public static member function of std::ios_base) [edit]
Member classes
failure stream exception (public member class of std::ios_base) [edit]
Init initializes standard stream objects (public member class of std::ios_base) [edit]

[edit] Notes

Feature-test macro Value Std Feature
__cpp_lib_fstream_native_handle 202306L (C++26) native handles support

[edit] Example

#include #include #include   int main() { std::string filename = "Test.b";   // prepare a file to read double d = 3.14; std::ofstream(filename, std::ios::binary) .write(reinterpret_cast<char*>(&d), sizeof d) << 123 << "abc";   // open file for reading std::ifstream istrm(filename, std::ios::binary); if (!istrm.is_open()) std::cout << "failed to open " << filename << '\n'; else { double d; istrm.read(reinterpret_cast<char*>(&d), sizeof d); // binary input int n; std::string s; if (istrm >> n >> s) // text input std::cout << "read back from file: " << d << ' ' << n << ' ' << s << '\n'; } }

Output:

read back from file: 3.14 123 abc