我仅限于两个要求,即它必须独立于操作系统,并且数据不保存为二进制,我需要将其保存为文本。我听说过内存映射,但被告知只能在Windows上使用它。目前,我的程序速度主要受文件加载速度的限制,因此可以提供任何帮助。到目前为止,这是我得出的最佳解决方案。
std::ifstream file(filepath);
fileContents.assign(std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>());
速度和操作系统不可知论几乎是互斥的。如评论所述,所有主要的操作系统都提供内存映射,但是它们提供内存的方式会有所不同。 Windows具有CreateFileMapping,而posix系统具有mmap。
如果boost的组件库可以掩盖这些差异,但是我不能告诉您是哪个库,这不会令我感到惊讶。
当然,还有整个“过早的优化是万恶之源”的问题,您确定标准库提供的内容不够“好”吗?