2013-08-30 46 views
-1

如何將int指定爲stringstringstream如何將int分配給stringstream的字符串?

的 「stringstream(mystr2) << b;」 並不在下面的例子中分配給bmystr2

#include <iostream> 
#include <string> 
#include <sstream> 

using namespace std; 

int main() 
{ 
    string mystr = "1204"; 
    int a; 
    stringstream(mystr) >> a; 
    cout << a << endl; // prints 1204 

    int b = 10; 
    string mystr2; 
    stringstream(mystr2) << b; 
    cout << mystr2 << endl; // prints nothing 
    return 0; 
} 

回答

3

這應該這樣做:

stringstream ss; 
ss << a; 
ss >> mystr; 

ss.clear(); 
ss << b; 
ss >> mystr2; 
+1

嗯,他與第二部分的麻煩,不是第一次,不是嗎? :)'b'在mystr2中會更清晰。 – lpapp

0

這將打印出的 '10' 下面正確。

#include <iostream> 
#include <string> 
#include <sstream> 

using namespace std; 

int main() 
{ 
    string mystr = "1204"; 
    int a; 
    stringstream(mystr) >> a; 
    cout << a << endl; // prints 1204 

    int b = 10; 
    string mystr2; 
    stringstream ss; 
    ss << b; 
    ss >> mystr2; 
    cout << mystr2 << endl; // prints 10 
    return 0; 
} 
1
int b = 10; 
string mystr2; 
stringstream ss; 
ss << b; 
cout << ss.str() << endl; // prints 10 
+0

「ss << << b」對我來說看起來不對...... – lpapp

+0

你還有一個額外的空間。 ;-) – lpapp

+0

@LaszloPapp,對不起,當我複製時,我沒有清理額外的'<<'。 –

0

當創建與所述構造函數的字符串流stringstream(mystr2)mystr2被複製作爲緩衝器的初始含量。 mystr2未被流中的後續操作修改。

要獲得流的內容,你可以使用str方法:

int b = 10; 
string mystr2; 
stringstream ss = stringstream(mystr2); 
ss << b; 
cout << mystr2.str() << endl; 

constructorstr方法。

0

回答你的文字問題是:

int b = 10; 
std::string mystr2 = static_cast<stringstream &>(stringstream()<<b).str(); 
cout << mystr2 << endl;