Я пытаюсь использовать безопасные методы обработки ввода с числами только в C ++, поэтому я использую объект stringstream следующим образом:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int first, second;
string input;
stringstream sstream;
cout << "First integer: ";
getline(cin, input);
sstream.str(input);
sstream >> first;
cout << first << endl; //display user input in integers
cout << "Second integer: ";
getline(cin, input);
sstream.str(input);
sstream >> second;
cout << second << endl; //display user input in integers
getline(cin, input); //pause program
return 0;
}
Однако во второй раз, похоже, переменная 'second' получает произвольное значение. Это вывод:
First integer: 1
1
Second integer: 2
2293592
Если я объявляю два объекта stringstream и использую их соответственно для обеих переменных, это, похоже, работает нормально. Означает ли это, что я не могу повторно использовать объект stringstream так, как я пытаюсь это сделать? В моей настоящей программе я собираюсь обработать намного больше двух входных значений от пользователя, поэтому я просто хочу убедиться, что есть другой способ, вместо создания нескольких объектов stringstream. Я сомневаюсь, что это очень важно, но я использую Windows XP и использую MinGW в качестве компилятора.
Я очень ценю любую помощь.