字串流

std::ostringstream 是一個類,其物件看起來像一個輸出流(也就是說,你可以通過 operator<< 寫入它們),但實際上儲存了寫入結果,並以流的形式提供它們。

請考慮以下簡短程式碼:

#include <sstream>
#include <string>                                                                                                                          

using namespace std;

int main()
{
    ostringstream ss;
    ss << "the answer to everything is " << 42;
    const string result = ss.str(); 
}   

這條線

ostringstream ss;

創造這樣一個物件。首先像常規流一樣操作此物件:

ss << "the answer to everything is " << 42;

然而,在此之後,可以像這樣獲得結果流:

const string result = ss.str();

(字串 result 將等於 the answer to everything is 42)。

當我們有一個已經定義了流序列化的類,並且我們想要一個字串形式時,這非常有用。例如,假設我們有一些類

class foo 
{   
    // All sort of stuff here.
};  

ostream &operator<<(ostream &os, const foo &f);

要獲取 foo 物件的字串表示,

foo f;

我們可以使用

ostringstream ss; 
ss << f;
const string result = ss.str();        

然後 result 包含 foo 物件的字串表示。