I/O manipulators | ||||
Print functions(C++23) | ||||
C-style I/O | ||||
Buffers | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++20) | ||||
Streams | ||||
Abstractions | ||||
File I/O | ||||
String I/O | ||||
Array I/O | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
Synchronized Output | ||||
(C++20) | ||||
Types | ||||
Error category interface | ||||
(C++11) | ||||
(C++11) |
Floating-point formatting | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
Integer formatting | |||||||||||||||||||||||||||||||
Boolean formatting | |||||||||||||||||||||||||||||||
Field width and fill control | |||||||||||||||||||||||||||||||
Other formatting | |||||||||||||||||||||||||||||||
Whitespace processing | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
Output flushing | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Status flags manipulation | |||||||||||||||||||||||||||||||
Time and money I/O | |||||||||||||||||||||||||||||||
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 anUnformattedInputFunction, except thatis.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:
failbit
; this does not apply if theeofbit
is already set onis prior to the call tows
, in which case the construction of the sentry object would setfailbit
).This is an input-only I/O manipulator, it may be called with an expression such asin>> std::ws for anyin of typestd::basic_istream.
Contents |
is | - | reference to input stream |
is (reference to the stream after extraction of consecutive whitespace).
Ifeofbit
is set on the stream prior to the call, the construction of the sentry object will setfailbit
.
#include <iomanip>#include <iostream>#include <istream>#include <sstream>#include <string> int main(){for(constchar* str:{" #1 test","\t #2 test","#3 test"}){std::string line;std::getline(std::istringstream{str}, line);std::cout<<"getline returns:\t"<<std::quoted(line)<<'\n'; std::istringstream iss{str};std::getline(iss>> std::ws, line);std::cout<<"ws + getline returns:\t"<<std::quoted(line)<<'\n';}}
Output:
getline returns:" #1 test"ws + getline returns:"#1 test"getline returns:" #2 test"ws + getline returns:"#2 test"getline returns:"#3 test"ws + getline returns:"#3 test"
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 415 | C++98 | callingstd::ws might not construct the sentryobject (insonsistent with other input functions) | required to construct the sentry object |
extracts and discards characters until the given character is found (public member function of std::basic_istream<CharT,Traits> )[edit] |