[英]Writing std::ostringstream to file without copying?
給定一個 function ,它將 output 字符串流作為參數:
void Foo(const std::ostringstream& _oss);
有什么方法可以將 stream 緩沖區寫入文件而無需調用 str()?
我想避免復制緩沖區( str() 所做的)。
void Foo(const std::ostringstream& _oss);
{
std::ofstream f("foo.bin");
//WANT: write _oss to f without copying the buffer?
}
有一個operator<<()
采用 stream 緩沖區:
f << _oss.rdbuf();
但是,緩沖區需要非常大才能產生明顯的差異。 通常,無論如何,寫入磁盤將占主導地位。
請注意,我會避免使用前導下划線創建標識符。
你不能在不復制的情況下將它寫入文件——因為這就是寫入文件的作用,它將它從 memory 復制到磁盤上。
當然,如果您想了解這方面的技術,您可以使用 memory 映射文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.