用C++高效地阅读一部分文本

Efficiently read a portion of text in C++

本文关键字:一部分 文本 C++ 高效      更新时间:2023-10-16

我读过这个,然后又读过这个关于如何在C++中利用boost::spirit库高效地读取大量文本(浮动在第二个问题中)的问题。

根据我所看到的,上面问题中提出的解决方案阅读整个文本,而我需要阅读输入文本的部分(例如从char x到char y)。

我可以利用上面的库来达到这个目的吗?否则我怎么能有效地做到这一点?

您甚至不需要映射文件的子部分,因为mmap只是虚拟地映射内存块。实际页面仅按需加载,因此即使您只有4GiB的物理RAM(甚至不需要交换),也可以映射文件的完整12GiB。

如果您的文件是基于文本的,您将希望从文件中的随机位置找到行的开头。

类似的例子在这里的第二种方法中:使用boost::iostreams::mapped_file_source和std::multimap