函数
<ios> <iostream>

std::skipws

ios_base& skipws (ios_base& str);
跳过空白字符
str 流设置 skipws 格式标志。

当设置 skipws 格式标志时,会读取并丢弃流中尽可能多的空白字符,直到遇到一个非空白字符。这适用于流上进行的每一次格式化输入操作(使用 operator>>)。

制表符、回车符和空格都将被视为空白字符(参见 isspace)。

可以使用 noskipws 操纵符来取消设置此标志,强制提取操作将前导空白字符视为要提取的内容的一部分。

对于标准流,skipws 标志在初始化时是设置的。

参数

str
格式标志受影响的流对象。
因为此函数是一个操纵符,它被设计为在不带参数的情况下,与流上的插入 (<<) 和提取 (>>) 操作结合使用(见下例)。

返回值

参数 str

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// skipws flag example
#include <iostream>     // std::cout, std::skipws, std::noskipws
#include <sstream>      // std::istringstream

int main () {
  char a, b, c;

  std::istringstream iss ("  123");
  iss >> std::skipws >> a >> b >> c;
  std::cout << a << b << c << '\n';

  iss.seekg(0);
  iss >> std::noskipws >> a >> b >> c;
  std::cout << a << b << c << '\n';
  return 0;
}

输出
123
  1

请注意,在第一组提取中,前导空格被忽略了,而在第二组中,它们被提取为有效字符。

数据竞争

修改 str。对同一个流对象的并发访问可能导致数据竞争。

异常安全

基本保证:如果抛出异常,str 处于有效状态。

另见