std::basic_istream::sentry

From cppreference.com
 
 
 
 
basic_istream::sentry
 
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=
[deleted]
not copy assignable
(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)