如何使用stringstream对象多次将整数转换为字符串?

时间:2017-10-14 10:33:32

标签: c++ stringstream

我想将输入作为整数,然后将其与字符串连接。这将是多次。输出将是具有此新整数值的前一个字符串。在输入整数后我使用stringstream对象进行转换。然后我连接它。但我第一次得到了预期的产量。但是下次当我从用户那里获取输入并尝试将它与连接部分中的前一个字符串输出字符串连接时,我的第一个输入整数是相同的。那么我该如何使用这个stringstream对象进一步使用。

这是我的代码:

string s = "Previous Choices :   ";
    int n;
    string d;
    stringstream ss;
    while(1) {
        cin>>n;
        ss << n;
        ss >> d;
        s += d;
        cout<<s<<”   ”<<endl;
}

我的输入

10
20
30

我的预期输出是

Previous Choices :   10
Previous Choices :   10 20
Previous Choices :   10 20 30

但输出结果如下:

Previous Choices :   10
Previous Choices :   10 10
Previous Choices :   10 10 10

3 个答案:

答案 0 :(得分:2)

您没有清除您的stringstream对象以供进一步使用。这就是为什么它包含第一个输入值并为所有输入添加它。

因此,要清除此对象,只需添加以下代码

即可
ss.clear();

然后你的代码将是这样的

string s = "Previous Choices :   ";
    int n;
    string d;
    stringstream ss;
    while(1) {
        cin>>n;
        ss << n;
        ss >> d;
        s += d;
        cout<<s<<”   ”<<endl;
        ss.clear();
}

答案 1 :(得分:1)

我做了类似的事情:

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
string s = "Previous Choices : ";
    int n;
    stringstream ss;
    while(1) 
    {
        cin >> n;
        ss << n;
        //cout << "in ss stream is: " << ss.str() << endl;
        s = s + ss.str() + " ";
        cout << s << endl;
        ss.str(string());
    }
    return 0;
}

它按预期工作。

答案 2 :(得分:1)

如果没有中间词sd,您可以直接使用流作为累加器来更简单地执行此操作。

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    stringstream ss;
    ss << "Previous Choices : ";
    while(1) 
    {
        int n;
        cin >> n;
        ss << n;
        cout << ss.str() << endl;
    }
    return 0;
}