我已经编写了这个程序来查找字符串中的子字符串,而这两个字符串都是用户输入。这个工作正常,虽然这里看起来非常业余。我的问题是当我把字符串&# 34;"和" b"如下:"我是kamlesh"和" am"分别。 我没有得到任何输出而省略" a [t4] ==' '"在最后的if语句中给出输出3和7。 请建议一些方法来纠正并将输出仅作为3。 发布编辑:现在工作正常。
-DBOOST_NO_CXX11_REF_QUALIFIERS
答案 0 :(得分:0)
正如donjuedo所说,这段代码非常难以理解。我很快看到的事情是[t4]是有问题的,因为无法保证在此之前将t4初始化;你不需要从子串的末尾向后走(t1);并且您不需要使用带整数的索引来遍历字符串,您可以移动指针。
代码应该是这样简单:
char* p1 = (char*)str; // the string to be searched
int substrIndex = 0;
while (*p1) {
char* p1Begin = p1; // keep the pos of start of search
char* p2 = (char*)target; // pointer for the substring
while (*p1 && *p2 && *p1 == *p2) { // as long as within the boundaries, chars equal
p1++;
p2++;
}
if (!*p2) // if all chars equal, passed end of target - success
cout << substrIndex << endl;
p1 = p1Begin + 1;
substrIndex++;
}
我没有编译,所以不是100%确定它会运行无bug;但是你明白了。