2017-10-14 71 views
2

我想將一個輸入作爲一個整數,然後將它與一個字符串連接起來。這將是多次。輸出將是具有此新整數值的前一個字符串。在輸入整數後,我使用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 

回答

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(); 
} 
0

我做了這樣的事情如下:

#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; 
} 

它按照您的預期工作。

0

您可以更簡單地做到這一點,沒有中間體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; 
}