строка — не может переместить определение istringstream из цикла

У меня есть следующий кусок кода:

#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); внутри цикла, однако, нельзя ли вывести это определение из цикла?

(Конечно, это является можно вытащить его, только то, что я ничего не могу сделать.)

0

Решение

Вы не можете вызвать конструктор объекта после объявления объекта. более того std::istringstream::operator ()(std::string) (обычно) нигде не объявляется.

использование std::istringstream::str(…) назначить его содержание после строительства.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]