【问题标题】:Does stringstream ignoring whitespaces?stringstream 是否忽略空格?
【发布时间】:2020-11-16 03:33:33
【问题描述】:

我正在阅读有关 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'不应该从流中读取空格并获取空格(32)的ASCII码或其他一些值吗? stringstream 是否忽略空格?那为什么我们在这里加一行:

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

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

【问题讨论】:

  • 如果您将&gt;&gt;cin 一起使用,它会忽略空格吗?为什么你认为stringstream 应该不同?如果它是一样的,肯定会更有意义吗?
  • @john -- “当然,如果它是一样的,那就有意义了”与“它是一样的”是不一样的。

标签: c++ stream stringstream


【解决方案1】:

stringstream 是否忽略空格?

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多