字符串流
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
对象的字符串表示。