C++ 搜索日志文件
可能重复:C++ 搜索日志文件,c++,excel,search,vim,C++,Excel,Search,Vim,可能重复: 我在一个600 Mb的大文件中搜索一个特殊的模式,它有7个十六进制值长。问题是 “模式”可能在下一行,并且 有几个地址行 通过消除所有回车符,我解决了问题1,但即使值在下一行,我仍然面临着一个问题,我不知道如何通过地址行进行搜索。下面是一个例子: 0x000001A0:36 5B 09 76 99 31 55 09 78 99 34 51 49 BF E0 03 0x000001B0:28 0B 0A 03 0B E0 07 28 0B 0A 03 0B 49 58 09 35 <
我在一个600 Mb的大文件中搜索一个特殊的模式,它有7个十六进制值长。问题是
0x000001A0:36 5B 09 76 99 31 55 09 78 99 34 51 49 BF E0 03
0x000001B0:28 0B 0A 03 0B E0 07 28 0B 0A 03 0B 49 58 09 35
< P> >:例如,我想找到模式>代码49 EF 03 0B 0B 0A<代码>,它跨越上面的行1和2,但是我不能只是定期搜索它,因为
hex = ""
for each line in lines:
tmp = line.split() // split on whitespace
hex += tmp[1:] // grab everything after address
if hex.contains(pattern):
# do something
或者使用正则表达式,但您已经了解了基本概念。您可以使用循环缓冲区
你想用它做什么?如果您只是想查看它,我想任何开源的十六进制查看器都会有一个按十六进制搜索的函数。如果你想在C++脚本中做一些事情,那就是另一个问题。如果你正在运行Windows,或者只在C++上运行一个行,一次跳过一个行,然后搜索那个行,加上前面的行似乎不难写。你尝试了吗?@ AJG85做<代码> GRP有一种搜索方法,当文本可以在中间与其他任意文本交叉行边界时?我只想基本上查看它。从那里开始,直到我发现我也在考虑提供一个Python解决方案,但是这个问题特别地问C++。在执行搜索之前,我不会读取整个文件,它似乎效率低下,并且无法保留查找结果所需的地址。是否有人熟悉十六进制查看器?我基本上是想“查看”整个过程中的模式file@Tyler31-请看这里@Steve,谢谢你的链接。唯一的问题是,这是一个“文本”文件,而观众不知道它应该显示十六进制值,我该如何告诉它。嘿,有些是妖术?我在看XVI32,它甚至将文件中的某个地方的文本转换成hexYes,这些将与二进制数据一起工作,而二进制数据是您手中文本的来源。现在没有了吗?如果你仍然有原始的二进制数据,这个问题就更容易回答了。这不是我想要做的。sry