2010-01-14 83 views

回答

4

我可能做到這一點的一般順序的東西:

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

int main() {  
    std::stringstream stream("Something "); 

    stream.seekp(0, std::ios::end); 
    stream << 12345; 

    std::cout << stream.str(); 
    return 0; 
} 

與正常流,補充到最後,你會用std::ios::atestd::ios::app打開第二個參數,但是對於字符串流,這似乎並不可靠(至少在真正的編譯器中 - gcc和VC++都不會產生我期望/如果我這樣做的輸出)。

+1

'c_str東西()'是錯誤的,應該是'std :: cout << stream.str();' – Frunsi 2010-01-14 17:45:09

+0

@hassan:no,stringstream沒有c_str()方法 – Frunsi 2010-01-14 17:46:32

+0

謝謝Neil - 愚蠢的失敗。 – 2010-01-14 17:46:42

1

如果您已經在使用boost,它可以使用lexical_cast。它基本上是上述的打包版本,適用於可以寫入和讀取流的任何類型。

string s("something"); 

s += boost::lexical_cast<string>(12); 

它可能不值得使用,如果你不使用提升了,但如果你是它可以使你的代碼更清晰,特別是做這樣

foo(string("something")+boost::lexical_cast<string>(12));