【发布时间】:2018-09-07 20:10:58
【问题描述】:
我有一个文本文件,它是文件分配表的修剪后的 hexdump,它由许多行组成,看起来有点像:
5e7f4c962f80d36dd2eb8fc9f20780e9
36e9f5c7645900000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
...
在这个文件中,我想搜索一个特定的子字符串。然而,这有一些障碍。通常,我只会使用 ifstream 和 getline(),然后将 line.find() 应用于每一行,直到我找到/未能找到子字符串。但是,使用此文件,目标子字符串可能会被拆分为多行。该文件也可能有成千上万行长,因此首先从文本文件中修剪 \n 字符是不切实际的(它实际上会使文本编辑器陷入困境并导致奇怪的结果,如果我尝试)。什么是完成我的搜索的有效方法?
编辑:我还应该指出,我实际上想要返回匹配字符串的位置,因此不可能一次将 2 行连接在一起,只删除该连接的 \n 字符、搜索和如果找不到,则遍历。如果匹配从非空白字符 15000 开始,我想返回 15000。
【问题讨论】:
-
在 Linux 上,我会
mmap()整个事情,然后从头到尾蛮力进行,聪明地。
标签: c++ string file search input