std::basic_istream::sentry
From cppreference.com
< cpp | io | basic istream
Defined in header <istream>
|
||
template< class CharT, class Traits = std::char_traits<CharT>> class std::basic_istream<CharT, Traits>::sentry; |
||
An object of class basic_istream::sentry is constructed in local scope at the beginning of each member function of std::basic_istream that performs input (both formatted and unformatted). Its constructor prepares the input stream: checks if the stream is already in a failed state, flushes the tie()'d output streams, skips leading whitespace if skipws flag is set, and performs other implementation-defined tasks if necessary. All cleanup, if necessary, is performed in the destructor, so that it is guaranteed to happen if exceptions are thrown during input.
Contents |
[edit] Member types
traits_type | Traits |
[edit] Member functions
constructs the sentry object. All the preparation tasks are done here (public member function) | |
finalizes the stream object after formatted input or after exception, if necessary (public member function) | |
operator= |
the assignment operator is deleted (public member function) |
checks if the preparation of the stream object was successful (public member function) |
[edit] Example
#include <iostream> #include <sstream> struct Foo { char n[5]; }; std::istream& operator>>(std::istream& is, Foo& f) { std::istream::sentry s(is); if(s) is.read(f.n, 5); return is; } int main() { std::string input = " abcde"; std::istringstream stream(input); Foo f; stream >> f; std::cout.write(f.n, 5); std::cout << '\n'; }
Output:
abcde
[edit] See also
extracts formatted data (public member function) | |
extracts characters and character arrays (function template) |