永发信息网

c++ 如何在文件中匹配一个字符串

答案:2  悬赏:0  手机版
解决时间 2021-03-04 13:55
  • 提问者网友:眉目添风霜
  • 2021-03-04 02:53
c++ 如何在文件中匹配一个字符串
最佳答案
  • 五星知识达人网友:woshuo
  • 2020-06-30 15:13
如果文件不是太大(比你当前的可用剩余内存小),且文件中不包含“0”这样的字节,直接把文件用一个缓冲调进内存,然后用字串搜索函数搜就是了;

如果文件确实太大,或者文件中可能包含“0”这样的字节,那么你需要自己编写模式匹配函数(就是与字串搜索函数类似功能的函数,网上有类似的C++源代码,但功能还不够)。

对含0数据的适应比较简单,搜索函数只要额外加两个缓冲区数据长度的参数传进去就行(代替以0结尾的字符串处理机制)——一个主缓冲长度,一个子串长度。

而跨缓冲区的搜索比较麻烦,因为搜索字很可能跨在两个相邻缓冲之间,这时搜索函数需要返回两个信息:一是搜索到的子串位置,二是本缓冲区内匹配了多少字节的子串(完全匹配时就是匹配了整个子串的长度);如果需要多次搜索子串在缓冲中的所有位置,则还需要把搜索起始位置做参数传进搜索函数。当然,这时子串在缓冲中搜索到的各位置必须转换为文件的绝对坐标才行。

跨缓冲区的搜索,上一缓冲的最后搜索结果(位置、已匹配长度)要带进下一缓冲的搜索,这些必要信息也要传进搜索函数,因此这是个复杂而参数众多的函数。
全部回答
  • 1楼网友:怙棘
  • 2019-10-10 04:17
先加头文件#include char a[10]="123"; char b[10]="abc"; strcat(a,b); //连接两个字符串,连接后的字符串存放在a中,数组a中有足够空间 printf("%s",a); //输出连接后的字符串 或: #include char a[10]="123"; char b[10]="abc"; char c[20]; strcpy(c,a); //把串a复制到有足够空间的c中 strcat(c,b); //把b连接到c的串尾
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯