我正在尝试使用 ostream 对象写入基于字符串流的用户输入的文件流(类似于fmemopen
Linux)。
我意识到 ostream 不采用 stringstream 或 fstream 对象,而是采用 stringbug 或 filebuf。
我尝试了以下代码:
char content[] = "This is a test";
if (isFile)
{
filebuf fp;
fp.open(filename, ios::out);
ostream os(&fp);
os << content;
fp.close();
}
else
{
stringbuf str;
ostream os(&str);
os << content;
}
这在 if else 条件下工作正常,但我想在 if else 条件之外使用ostream os
, as os << content
。但是问题是我无法全局定义 ostream os,因为 ostream 没有这样的构造函数。
有没有办法解决这个问题?