VC中如何快速判断一个文件的内容中是否包含某个串(区分大小写)?
如何快速判断一个文件的内容中是否包含某个串(区分大小写)?
我把内容全部读出来放在CString 中
MakeLower();再比较,发现效率很低
另外全部读出来不支持大文件的,有10几万的文件要判断该怎么办?
[解决办法]
当然只有是一个个搜索了.
然后用正则表达式也是一个不错的选择.
[解决办法]
需要先分析要查询的数据有没有什么固定模式可循的.
如果只是简单的搜索,那必须要挨个查.
想高效可以把文件转换成二进制放到数据库里.然后引索,再查.查询出结果之后再反定位到源文件.
[解决办法]
可以使用CStringT中的函数Find。
[解决办法]
不需要用CString,直接char *,先比较第一个字符,相同再比较下一个字符是否相同,不同跳到第三个字符重新开始。
这样只需要遍历文件一次,效率应该比正则还高。
[解决办法]
不应该一次全部读入内存,可以分次读入固定大小到缓存再查找,也可以使用其他类似方式避免一次大量读入,另外建议自己写匹配检查函数,尽量简短,对效率很高可以考虑使用汇编写这部分。
[解决办法]
区分大小写 为什么要 MakeLower
不要用 CString , 直接分配块内存
直接用strstr 速度非常快的
[解决办法]
快速模式匹配...