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)  | |