Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::basic_istream<CharT,Traits>::sentry

      From cppreference.com
      <cpp‎ |io‎ |basic istream
       
       
       
       
      class sentry;

      An object of classbasic_istream::sentry is constructed in local scope at the beginning of each member function ofstd::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 unlessnoskipws 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_typeTraits

      [edit]Member functions

      (constructor)
      constructs the sentry object. All the preparation tasks are done here
      (public member function)[edit]
      (destructor)
      finalizes the stream object after formatted input or after exception, if necessary
      (public member function)[edit]
      operator=
      [deleted]
      not copy assignable
      (public member function)
      operator bool
      checks if the preparation of the stream object was successful
      (public member function)[edit]

      std::basic_istream::sentry::sentry

      explicit sentry(std::basic_istream<CharT, Traits>& is,bool noskipws=false);

      Prepares the stream for formatted input.

      Ifis.good() isfalse, callsis.setstate(std::ios_base::failbit) and returns. Otherwise, ifis.tie() is not a null pointer, callsis.tie()->flush() to synchronize the output sequence with external streams. This call can be suppressed if the put area ofis.tie() is empty. The implementation may defer the call toflush() until a call ofis.rdbuf()->underflow() occurs. If no such call occurs before the sentry object is destroyed, it may be eliminated entirely.

      Ifnoskipws is zero andis.flags()&std::ios_base::skipws is nonzero, the function extracts and discards all whitespace characters until the next available character is not a whitespace character (as determined by the currently imbued locale inis). Ifis.rdbuf()->sbumpc() oris.rdbuf()->sgetc() returnstraits::eof(), the function callssetstate(std::ios_base::failbit|std::ios_base::eofbit) (which may throwstd::ios_base::failure).

      Additional implementation-defined preparation may take place, which may callsetstate(std::ios_base::failbit) (which may throwstd::ios_base::failure).

      If after preparation is completed,is.good()==true, then any subsequent calls tooperatorbool will returntrue.

      Parameters

      is - input stream to prepare
      noskipws -true if whitespace should not be skipped

      Exceptions

      std::ios_base::failure if the end of file condition occurs when skipping whitespace.

      std::basic_istream::sentry::~sentry

      ~sentry();

      Does nothing.

      std::basic_istream::sentry::operator bool

      explicit operatorbool()const;

      Checks whether the preparation of the input stream was successful.

      Parameters

      (none)

      Return value

      true if the initialization of the input stream was successful,false otherwise.

      [edit]Example

      Run this code
      #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]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 195C++98it was unclear whether the constructor would seteofbitmade clear
      LWG 419C++98the constructor did not setfailbit ifeofbit has been setsetsfailbit in this case

      [edit]See also

      extracts formatted data
      (public member function)[edit]
      extracts characters and character arrays
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_istream/sentry&oldid=147781"

      [8]ページ先頭

      ©2009-2025 Movatter.jp