0

大きなバイナリ ファイルの大きなチャンクを読み書きします。

標準 C++ または今後の標準 C++ または今後の標準 C++ + ブーストに、私の作業を容易にするクラスはありますか?

そうでない場合、これに文字列クラスを使用することは可能でしょうか? そうすることの危険性は何ですか?

PS:物事を明確にするいくつかの観察。ブロブは頻繁に渡されると予想されるため、参照カウントと CoW を備えたコンテナーがおそらく望ましいでしょう。

また、文字列クラスの使用に対する私の抵抗は 2 つあります。これらは文字列ではなく BLOB であり、「印刷できない文字」であり、特に null が表示されると問題が発生する可能性があります。

4

2 に答える 2

1

バイナリ データのブロブがある場合、これを簡単かつ効率的にstd::vector<unsigned char>.

を呼び出してブロブのサイズがわかっている (または推測できる) 場合は、パフォーマンスを向上させることができますreserve

最後に、ストリームを使用すると、 を使用して簡単にベクトルに読み込むことができますstd::back_inserter

于 2012-04-05T07:27:53.537 に答える
0

正確に何をしたいのかにもよりますが、boost のようなメモリマップファイルはおそらく良い出発点です。メモリ内の変更には、他の人が示唆しているように、std::vector を使用します。

CoW を気にする必要はありません。C++ の世界ではたいてい嫌われていますが、Qt のすべてが例外になる可能性があります。

于 2012-04-05T14:56:50.627 に答える