0

我将读取和写入大型二进制文件的大块。

是否有标准 C++ 或即将推出的标准 C++ 或即将推出的标准 C++ + 升压中的课程,这将使我的任务更轻松?

如果没有,是否可以为此使用字符串类?这样做会有什么危险?

PS:一些观察可以澄清事情。我希望这些 blob 会被大量传递,因此引用计数和 CoW 的容器可能会更可取。

此外,我对使用字符串类的抵制是双重的:它们是 blob,而不是字符串,“不可打印的字符”,特别是 null 在出现时可能会造成困难。

4

2 回答 2

1

如果您有一个二进制数据块,您可以轻松有效地将其存储在std::vector<unsigned char>.

如果您知道(或可以猜测)blob 的大小,则可以通过调用来提高性能reserve

最后,如果您使用流,您可以使用std::back_inserter.

于 2012-04-05T07:27:53.537 回答
0

根据您想要做什么,内存映射文件(例如来自 boost 的文件)可能是一个很好的起点。正如其他人所建议的那样,对于内存中的修改,请使用 std::vector。

不要为 CoW 烦恼——它在 C++ 世界中大多不受欢迎,除了 Qt 中的所有内容。

于 2012-04-05T14:56:50.627 回答