Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
高效地阅读C+中的部分文本+; 我已经阅读并询问了如何在C++中高效地阅读大量文本(第二个问题中的浮点数),利用 Boo::精神>代码>库。p>_C++_Boost_Text - Fatal编程技术网

高效地阅读C+中的部分文本+; 我已经阅读并询问了如何在C++中高效地阅读大量文本(第二个问题中的浮点数),利用 Boo::精神>代码>库。p>

高效地阅读C+中的部分文本+; 我已经阅读并询问了如何在C++中高效地阅读大量文本(第二个问题中的浮点数),利用 Boo::精神>代码>库。p>,c++,boost,text,C++,Boost,Text,据我所见,上述问题中提出的解决方案阅读了全文,而我需要阅读输入文本的一部分(例如从char x到char y) 我可以为此目的利用上面的库吗?否则我怎么能有效地执行呢?您甚至不需要映射文件的一个子部分,因为mmap实际上只映射内存块。实际页面仅按需加载,因此即使只有4GB的物理RAM(甚至不需要交换),也可以映射文件的全部12GiB 如果您的文件是基于文本的,则需要从文件中的随机位置查找行的开始 第二种方法中有一个类似的例子:那么,您知道文件中有一个偏移量,您想从该偏移量读取另一个偏移量吗?那块

据我所见,上述问题中提出的解决方案阅读了全文,而我需要阅读输入文本的一部分(例如从char x到char y)


我可以为此目的利用上面的库吗?否则我怎么能有效地执行呢?

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

如果您的文件是基于文本的,则需要从文件中的随机位置查找行的开始


第二种方法中有一个类似的例子:

那么,您知道文件中有一个偏移量,您想从该偏移量读取另一个偏移量吗?那块有多大?没错。然而,这对于map/reduce并行项目是必需的,因此每个块可以是GBs的顺序?另外,文件是否比您机器的内存大?您完全正确,很抱歉我没有描述。但是最多10GBs(因为我的机器内存为12GBs)。因此,我个人的做法是在
startOffset
处进行
mmap
,大小为
(endOffset-startOffset)
[或相应的Windows功能]。需要注意的是,映射整个文件只在64位体系结构上是安全的,有些人会说,如果你需要一个定义良好且已知的子集,那么不映射它的确切部分就是草率的编程到处都很安全。它可能不适用于任何地方不,它不安全。正如我所知,你知道sehe,如果你在32位上声明所有大的连续地址空间块,只在DLL之间留下一些小片段,你可能会得到一些非常奇怪和不可预测的错误和失败,不仅在你自己的代码中,而且在操作系统代码中。从本质上讲,地址空间不足和内存不足一样,都是有问题和不可预测的-大多数代码,包括操作系统代码,由于缺乏测试/谁在乎/无论如何都是可以避免的。@NiallDouglas sinds喜欢发生合理的事。真的是记忆犹新。我想知道什么操作系统会处理得如此糟糕。这听起来是绘制次区域地图的合理动机