[istream.manip]

# 31 Input/output library [[input.output]](./#input.output)

## 31.7 Formatting and manipulators [[iostream.format]](iostream.format#istream.manip)

### 31.7.5 Input streams [[input.streams]](input.streams#istream.manip)

#### 31.7.5.5 Standard basic_istream manipulators [istream.manip]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L5735)

Each instantiation of the function template
specified in this subclause
is a designated addressable function ([[namespace.std]](namespace.std "16.4.5.2.1 Namespace std"))[.](#1.sentence-1)

[ð](#lib:ws)

`template<class charT, class traits>
  basic_istream<charT, traits>& ws(basic_istream<charT, traits>& is);
`

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L5747)

*Effects*: Behaves as an [unformatted input function](istream.unformatted "31.7.5.4 Unformatted input functions [istream.unformatted]"), except that it does not count the number of characters extracted and
does not affect the value returned by subsequent calls to is.gcount()[.](#2.sentence-1)

After
constructing a sentry object extracts characters as long as the next available
character c is whitespace or until there are no more characters in the sequence[.](#2.sentence-2)

Whitespace characters are distinguished with the same criterion as used by[sentry​::​sentry](istream.sentry "31.7.5.2.4 Class basic_­istream​::​sentry [istream.sentry]")[.](#2.sentence-3)

Ifws stops extracting characters because there are no more available it setseofbit,
but notfailbit[.](#2.sentence-4)

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L5762)

*Returns*: is[.](#3.sentence-1)
