簡體   English   中英

將 std::ostringstream 寫入文件而不復制?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM