永发信息网

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

答案:2  悬赏:60  手机版
解决时间 2021-12-16 02:35
c++如何在文件中匹配一个字符串
最佳答案
如果文件不是太大(比你当前的可用剩余内存小),且文件中不包含“0”这样的字节,直接把文件用一个缓冲调进内存,然后用字串搜索函数搜就是了;

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

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

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

跨缓冲区的搜索,上一缓冲的最后搜索结果(位置、已匹配长度)要带进下一缓冲的搜索,这些必要信息也要传进搜索函数,因此这是个复杂而参数众多的函数。
全部回答
先加头文件#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的串尾
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
XP磁盘属性里的“允许索引服务编辑该磁盘的索
什么鱼片好吃?鳕鱼鳗鱼章鱼或其他?
jk是什么国际快递,跪求!!!
车子行进时前后晃悠怎么回事?尤其是刚启动状
养生馆可以经营保健食品吗
电脑无线不能自动获取ip地址吗
年假扣了饭补和奖金合理吗
你我都知道一分钟就能决定战斗的胜负?我李云
老师您辛苦了班会材料
M2晶纯液的效果是?是不是适合这个季节用的吗
华为mate9和三星s7哪个照相更好
薏苡附子败酱散的服用要求
旋转小火锅清汤锅里面都放什么
强盗一号还有什么抢红包软件比强盗一号好的
怎么克服科目三考试心里紧张的问题
推荐资讯
如何将自己姓名设计成手机屏保??
长春龙嘉机场到敦化市有直达客车么,怎么走时
蝴蝶的美称有哪些?
我部落冲突的号是手机号注册的,如果手机号被
一架飞机从某机场向南偏东400方向飞行了1200
天津市公安局宝坻分局交通警察支队林亭口大队
1975年阳历4月20日生属兔幸运数字是多少
免费测名打分
我的iphone4s音量键降低键突然就不管用了,怎
我的农历生日是1981年4月27日哪我的公历生日
判断题细菌有叶绿体,不需要依靠现成的有机物
月嫂培训价格
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?