
- The C Standard Library
- The C Standard Library
- The C++ Standard Library
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C++ Istream Library - sentry
Description
It is used to prepare stream for input. All member functions that perform an input operation automatically construct an object of this class and then evaluate it (which returns true if no state flag was set). Only if this object evaluates to true, the function attempts the input operation (otherwise, it returns without performing it). Before returning, the function destroys the sentry object.
Declaration
Following is the declaration for std::basic_istream::sentry.
C++98
class sentry { public: explicit sentry (basic_istream& is, bool noskipws = false); ~sentry(); operator bool() const; private: sentry (const sentry&); sentry& operator= (const sentry&); };
C++11
class sentry { public: explicit sentry (basic_istream& is, bool noskipws = false); ~sentry(); explicit operator bool() const; sentry (const sentry&) = delete; sentry& operator= (const sentry&) = delete; };
Members
explicit sentry (basic_istream& is, bool noskipws = false); − Prepares the output stream for an output operation, performing the actions described above.
~sentry(); − Performs no operations (implementation-defined).
explicit operator bool() const; − When the object is evaluated, it returns a bool value indicating whether the sentry constructor successfully performed all its tasks: If at some point of the construction process, an internal error flags was set, this function always returns false for that object.
Example
In below example explains about std::basic_istream::sentry.
#include <iostream> #include <string> #include <sstream> #include <locale> struct Phone { std::string digits; }; std::istream& operator>>(std::istream& is, Phone& tel) { std::istream::sentry s(is); if (s) while (is.good()) { char c = is.get(); if (std::isspace(c,is.getloc())) break; if (std::isdigit(c,is.getloc())) tel.digits+=c; } return is; } int main () { std::stringstream parseme (" (555)2326"); Phone myphone; parseme >> myphone; std::cout << "digits parsed: " << myphone.digits << '\n'; return 0; }
Let us compile and run the above program, this will produce the following result −
digits parsed: 5552326