【问题标题】:C++ - can't move istringstream definition out of loopC++ - 无法将 istringstream 定义移出循环
【发布时间】:2013-06-12 08:05:52
【问题描述】:

我有以下代码:

#include <sstream>
#include <iostream>
using namespace std;

int main()
{
    string inp, s;
    istringstream iss;
    do
    {
        getline (cin, inp);
        iss(inp);
        int a = 0, b = 0; float c = 0;
        iss >> s >> a >> b >> c;
        cout << s << " " << a << " " << b << " " << c << endl;
    }
    while (s != "exit");
}

会产生以下错误:

error: no match for call to ‘(std::istringstream) (std::string&)’

我知道可以通过在循环中使用istringstream iss(inp); 来避免该问题,但是是否不能将此定义移出循环?

(当然,可以搬出去的,只是我什么都做不了。)

【问题讨论】:

标签: c++ string istringstream


【解决方案1】:

您不能在对象声明之后调用对象构造函数。此外,std::istringstream::operator ()(std::string) 不会(通常)在任何地方声明。

构造后使用std::istringstream::str(…)分配其内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2012-01-17
    • 2010-11-27
    • 2015-05-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多