给定一个以输出字符串流作为参数的函数:
void Foo(const std::ostringstream& _oss);
有没有办法将流缓冲区写入文件 WITHOUT 必须调用str()?
我想避免复制缓冲区(str()会这样做。)
void Foo(const std::ostringstream& _oss);
{
std::ofstream f("foo.bin");
//WANT: write _oss to f without copying the buffer?
}
答案 0 :(得分:11)
有一个operator<<()
获取流缓冲区:
f << _oss.rdbuf();
但是,缓冲区需要非常大才能产生明显的差异。通常,无论如何,写入磁盘将占据所需的时间。
请注意,我会避免使用前导下划线创建标识符。
答案 1 :(得分:0)
如果没有复制,你就无法将其写入文件 - 因为这是写入文件的内容,它会将其从内存中复制到磁盘上。
当然,如果您想获得有关此技术的技术,可以使用内存映射文件。