0

我有以下代码:

#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);在循环内使用来避免该问题,但是,是否不可能将此定义移出循环?

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

4

1 回答 1

3

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

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

于 2013-06-12T08:08:20.020 回答