<istream> <iostream>


for istream
istream& ws (istream& is);
basic template
template <class charT, class traits>basic_istream<charT,traits>& ws (basic_istream<charT,traits>& is);
Extract whitespaces
Extracts as many whitespace characters as possible from the current position in the input sequence. The extraction stops as soon as a non-whitespace character is found. These extracted whitespace characters are discarded.

Notice that basic_istream objects have the skipws flag set by default: This applies a similar effect before the formatted extraction operations (see operator>>).

No specifications on the internal operations performed by this function.
Internally, the function accesses the input sequence is by first constructing a sentry object (with noskipws set to true). Then (if good), it extracts characters from is's associated stream buffer object as if calling its member functions sbumpc or sgetc, and finally destroys the sentry object before returning.

Calling this function does not alter the value returned by gcount.


Input stream object from where whitespaces are extracted.
Because this function is a manipulator, it is designed to be used alone with no arguments in conjunction with the extraction (>>) operations on input streams (see example below).

Return Value

Argument is.

Errors are signaled by modifying the internal state flags of is:
eofbitThe function stopped extracting characters because the input sequence has no more characters available (end-of-file reached).
failbitThe stream state of is was not good before the call (applies to C++11 and other implementations constructing a sentry object)
badbitError on stream (such as when this function catches an exception thrown by an internal operation).
When set, the integrity of the stream may have been affected.
Multiple flags may be set on is by a single operation.

If the operation sets an internal state flag of is that was registered using its member exceptions, the function throws an exception of member type failure.


// ws manipulator example
#include <iostream>     // std::cout, std::noskipws
#include <sstream>      // std::istringstream, std::ws

int main () {
  char a[10], b[10];

  std::istringstream iss ("one \n \t two");
  iss >> std::noskipws;
  iss >> a >> std::ws >> b;
  std::cout << a << ", " << b << '\n';

  return 0;

one, two

Data races

Modifies the stream object is.
Concurrent access to the same stream object may cause data races, except for the standard stream objects cin and wcin when these are synchronized with stdio (in this case, no data races are initiated, although no guarantees are given on the order in which extracted characters are attributed to threads).

Exception safety

Basic guarantee: if an exception is thrown, the object is in a valid state.
It throws an exception of member type failure if the resulting error state flag of is is not goodbit and its member exceptions was set to throw for that state.
Any exception thrown by an internal operation is caught and handled by the function, setting is's badbit flag. If badbit was set on the last call to exceptions for is, the function rethrows the caught exception.

See also