我试图使用安全的做法来处理仅在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作为我的编译器。

我非常感谢您的帮助。

最佳答案

sstream.clear();之后使用sstream >> first;

关于c++ - 重用stringstream对象的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2144144/

10-09 13:10