函数
<ios> <iostream>

std::noskipws

ios_base& noskipws (ios_base& str);
不跳过空白字符
清除 str 流的 skipws 格式标志。

当未设置 skipws 格式标志时,所有流操作都将初始空白字符视为要提取的有效内容。

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

此标志可以通过 skipws 操纵器进行设置。当设置此标志时,会读取并丢弃流中尽可能多的初始空白字符,直到找到一个非空白字符为止。这将适用于流上进行的 *所有* 格式化输入操作 operator>>

请注意,许多提取操作将空白字符本身视为终止字符,因此,当 skipws 标志禁用时,某些提取操作可能会从流中提取零个字符。

对于标准流, 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 处于有效状态。

另见