Namespaces
Variants
Views
Actions

std::basic_istream::sentry

From cppreference.com
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) [edit]
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]

[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) [edit]
extracts characters and character arrays
(function template) [edit]