---
name: "std::basic_istream_sentry"
section: "3cxx"
platform: "linux"
package: "libstdc++-12-doc"
version: "12.4.0-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/std::basic_istream_sentry/3cxx"
---

# std::basic\_istream\_sentry(3cxx)

Performs setup work for input streams.

## NAME

std::basic\_istream\< \_CharT, \_Traits \>::sentry - Performs setup work for input streams.

## SYNOPSIS

`#include <istream>`

### Public Types

**typedef** **\_\_istream\_type::\_\_ctype\_type** **\_\_ctype\_type**\
 **typedef** \_Traits::int\_type **\_\_int\_type**\
 **typedef** **basic\_istream**\< \_CharT, \_Traits \> **\_\_istream\_type**\
 **typedef** **basic\_streambuf**\< \_CharT, \_Traits \> **\_\_streambuf\_type**\
 **typedef** \_Traits **traits\_type**\
 Easy access to dependent types.

### Public Member Functions

**sentry** (**basic\_istream**\< \_CharT, \_Traits \> &**\_\_is**, bool **\_\_noskipws**=**false**)\
 The constructor performs all the work.  **operator bool** () const\
 Quick status checking.

## Detailed Description

### template\<typename \_CharT, typename \_Traits\>

class std::basic\_istream\< \_CharT, \_Traits \>::sentry"Performs setup work for input streams.

Objects of this class are created before all of the standard extractors are run. It is responsible for *exception-safe prefix and suffix operations,* although only prefix actions are currently required by the standard.

## Member Typedef Documentation

### template\<typename \_CharT , typename \_Traits \> typedef \_Traits std::basic\_istream\< \_CharT, \_Traits \>::sentry::traits\_type

Easy access to dependent types.

## Constructor & Destructor Documentation

### template\<typename \_CharT , typename \_Traits \> std::basic\_istream\< \_CharT, \_Traits \>::sentry::sentry (basic\_istream\< \_CharT, \_Traits \> & \_\_is, bool \_\_noskipws = false)` [explicit]`

The constructor performs all the work.

**Parameters**

*\_\_is* The input stream to guard. \
 *\_\_noskipws* Whether to consume whitespace or not.

If the stream state is good (*\_\_is.good()* is true), then the following actions are performed, otherwise the sentry state is false (*not okay*) and failbit is set in the stream state.

The sentry's preparatory actions are:

- 1\.

  if the stream is tied to an output stream, `is.tie()->flush()` is called to synchronize the output sequence

- 2\.

  if *\_\_noskipws* is false, and `ios_base::skipws` is set in `is.flags()`, the sentry extracts and discards whitespace characters from the stream. The currently imbued locale is used to determine whether each character is whitespace.

If the stream state is still good, then the sentry state becomes true (*okay*).

References **std::ios\_base::badbit**, **std::ios\_base::eofbit**, **std::ios\_base::failbit**, **std::ios\_base::goodbit**, and **std::ios\_base::skipws**.

## Member Function Documentation

### template\<typename \_CharT , typename \_Traits \> std::basic\_istream\< \_CharT, \_Traits \>::sentry::operator bool () const` [inline]`, ` [explicit]`

Quick status checking.

**Returns**

The sentry state.

For ease of use, sentries may be converted to booleans. The return value is that of the sentry state (true == okay).

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
