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()
不会跳过空格。因此,如果有前导空格,您将必须手动将其删除。
我正在阅读有关 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()
不会跳过空格。因此,如果有前导空格,您将必须手动将其删除。