Рассмотрим следующий код:Неожиданное поведение stringstream
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
stringstream ss;
ss << string("12");
int h;
ss >> h;
cout << h << endl;
ss.str(string("")); // clear the content of ss
ss << string("30");
int m;
ss >> m;
cout << m << endl;
return 0;
}
Запуск выше код дает некоторый случайный выход:
12
0
В другой раз, наблюдается следующий вывод:
12
4
Я ожидал, что выход будет просто:
12
30
Почему я получил неожиданные результаты?
Также, что должно быть лучшим способом разобрать string s
до int i
без необходимости поддержки C++ 11? Должно ли это быть int i = atoi(s.c_str())
?
_'Также, что должно быть лучшим способом для синтаксического анализа ...'_ Использовать 'std :: istringstream'. –
Неправильно очистка потока, используйте 'ss.clear()' – yizzlez