Я не знаю, действительно ли это странно или это так, как должно быть, но вот моя настоящая борьба. Предположим, у нас есть что-то вроде:
stringstream sso("12 1442 nana 7676");
double num = 0;
while(sso >> num || !sso.eof()) {
if(sso.fail()) {
sso.clear();
string dummy;
sso >> dummy;
continue;
}
cout << num << endl;
}
В результате:
12
1442
7676
, как и ожидалось. Но если я, например, изменю строковый литерал на 12 + 1442 nana 7676
, то получу:
12
7676
Почему персонаж '+'
запутывает все здесь?