我将读取和写入大型二进制文件的大块。
是否有标准 C++ 或即将推出的标准 C++ 或即将推出的标准 C++ + 升压中的课程,这将使我的任务更轻松?
如果没有,是否可以为此使用字符串类?这样做会有什么危险?
PS:一些观察可以澄清事情。我希望这些 blob 会被大量传递,因此引用计数和 CoW 的容器可能会更可取。
此外,我对使用字符串类的抵制是双重的:它们是 blob,而不是字符串,“不可打印的字符”,特别是 null 在出现时可能会造成困难。
如果您有一个二进制数据块,您可以轻松有效地将其存储在std::vector<unsigned char>
.
如果您知道(或可以猜测)blob 的大小,则可以通过调用来提高性能reserve
。
最后,如果您使用流,您可以使用std::back_inserter
.
根据您想要做什么,内存映射文件(例如来自 boost 的文件)可能是一个很好的起点。正如其他人所建议的那样,对于内存中的修改,请使用 std::vector。
不要为 CoW 烦恼——它在 C++ 世界中大多不受欢迎,除了 Qt 中的所有内容。