C++ 参考手册

定义于头文件 <istream>
template< class CharT, class Traits >
std::basic_istream<CharT,Traits>& ws( std::basic_istream<CharT, Traits>& is );

从输入流舍弃前导空白符。

表现为无格式输入函数 (UnformattedInputFunction) ,除了不修改 is.gcount() 。在构造并检查 sentry 对象后,从流释出并舍弃字符,直至出现任何下列条件之一:

  • 输入序列中出现文件尾条件(该情况下函数调用 setstate(eofbit) 但不设置 failbit ;若调用 ws 前已在 is 上设置 eofbit ,则不适用这条,该情况下 sentry 对象的构造会设置 failbit )。
  • 输入序列中下个可用字符 c 不是以 std::isspace(c, is.getloc()) 确定的空白字符。不释出该非空白字符。

这是仅为输入的 I/O 操纵符,可用如 in >> std::ws 的表达式对任何 std::basic_istream 类型的 in 调用。

参数

is - 到输入流的引用

返回值

is (到释出连续空白符后的流的引用)

注意

若在调用前在流上设置了 eofbit ,则 sentry 对象的构造将设置 failbit

示例

#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";
}

输出:

ws + getline returns: "this is a test"

参阅

读且取走并舍弃字符,直至发现给定字符
(std::basic_istream<CharT,Traits> 的公开成员函数)