帮我把这个C语言程序换成C++的

来源:百度知道 编辑:UC知道 时间:2024/07/05 05:48:02
#include"Head.h"

// 辅助数组,取决于字符集和,默认的采用 ASCII字符集,256个元素
#define LEN 256
int BM(char *s, char *p, int index, int position[])
/*
参数说明:
char *s: 匹配串
char *p: 模式串
int index: 模式串匹配的起始位置,是匹配串的索引
int position[] 辅助数组,
*/
{
int len = strlen(s);
int i,j, nextindex;
i = strlen(p)-1;//减1是因为要去掉最后的那个'\0'
j = index+strlen(p)-1;//第一次调用 BMMatcher 时 index = 0,因为下面的 for 循环是从模式串的末尾开始比较,所以匹配串的初始比较位置应该是从开头数模式串长度个位置开始。

for(; i>=0; i--, j--)
{
if(s[j] != p[i])
break;
}

if(i<0) //i<0 说明模式串已经遍历完毕
return 0; /*匹配成功*/
else if(position[s[j]]>0)//当出现不匹配时,查看匹配串当前位置的字符有没有出现在模式串中
nextindex = index + i - position[s[j]];
//index 是当前的匹配串起始偏移量,i 是模式串还剩的比较字串数目, position[s[j]]是所出现的第一个不匹配的字符在匹配串中的位置。这样下次比较就从匹配串中出现 s[j] 的位置开始比较
else nextindex = index + 1;

if(nextindex > LEN

天啊,你的程序基本都是c++了吧。除了“#define LEN 256 ”这段是使用了C里面的宏定义了。在c++里可以改为“const int LEN=256;”。记得不要漏了分号。

就是咯,本来就是C++的居多了……

C++兼容C,你就说这是c++就可以了。