std::ws

From cppreference.com
< cpp‎ | io‎ | manip
 
 
Input/output library
I/O manipulators
C-style I/O
Buffers
(deprecated in C++98)
Streams
Abstractions
File I/O
String I/O
Array I/O
(deprecated in C++98)
(deprecated in C++98)
(deprecated in C++98)
Synchronized Output
Types
Error category interface
(C++11)
 
Input/output manipulators
Floating-point formatting
Integer formatting
Boolean formatting
Field width and fill control
Other formatting
Whitespace processing
ws
Output flushing
Status flags manipulation
Time and money I/O
(C++11)
(C++11)
(C++11)
(C++11)
Quoted manipulator
(C++14)
 
Defined in header <istream>
template< class CharT, class Traits >
std::basic_istream<CharT,Traits>& ws( std::basic_istream<CharT, Traits>& is );

Discards leading whitespace from an input stream.

Behaves as an UnformattedInputFunction, except that is.gcount() is not modified. After constructing and checking the sentry object, extracts characters from the stream and discards them until any one of the following conditions occurs:

  • end of file condition occurs in the input sequence (in which case the function calls setstate(eofbit) but does not set failbit; this does not apply if the eofbit is already set on is prior to the call to ws, in which case the construction of the sentry object would set failbit).
  • the next available character c in the input sequence is not whitespace as determined by std::isspace(c, is.getloc()). The non-whitespace character is not extracted.

This is an input-only I/O manipulator, it may be called with an expression such as in >> std::ws for any in of type std::basic_istream.

Parameters

is - reference to input stream

Return value

is (reference to the stream after extraction of consecutive whitespace)

Notes

If eofbit is set on the stream prior to the call, the construction of the sentry object will set failbit.

Example

#include <iostream>
#include <istream>
#include <sstream>
#include <string>
 
int main()
{
    std::istringstream s("     this is a test");
    std::string line;
    std::getline(s >> std::ws, line);
    std::cout << "ws + getline returns: \"" << line << "\"\n";
}

Output:

ws + getline returns: "this is a test"

See also

extracts and discards characters until the given character is found
(public member function of std::basic_istream<CharT,Traits>)