字串流
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
物件的字串表示。