stringstream 会忽略空格吗?

Does stringstream ignoring whitespaces?

我正在阅读有关 stringstream 的内容并找到了这个示例。

stringstream ss;
int foo;
int bar = 0;

ss << 100 << ' ' << 200;
ss >> foo;
ss >> bar;

cout << "foo: " << foo << '\n'; // 100
cout << "bar: " << bar << '\n'; // 200

为什么变量'bar'的值为200? 'bar' 不应该从流中读取 space 并获得 space (32) 或其他一些值的 ASCII 码吗? stringstream 会忽略 whitespaces 吗?那么为什么我们在这里添加一行:

ss >> foo;
ss.ignore(1);
ss >> bar;

条柱的值仍然是 200 而不是 0?

Does stringstream ignoring whitespaces?

从技术上讲,operator>>() 函数会忽略前导空格。 ss.ignore(1) 是一种手动执行的方法,但没有必要。

另一方面,函数 std::getline() 不会跳过空格。因此,如果有前导空格,您将必须手动将其删除。