查找字符串中的子字符串,同时它们都是用户输入

时间:2015-08-26 18:40:40

标签: c++ string substring

我已经编写了这个程序来查找字符串中的子字符串,而这两个字符串都是用户输入。这个工作正常,虽然这里看起来非常业余。我的问题是当我把字符串&# 34;"和" b"如下:"我是kamlesh"和" am"分别。 我没有得到任何输出而省略" a [t4] ==' '"在最后的if语句中给出输出3和7。 请建议一些方法来纠正并将输出仅作为3。 发布编辑:现在工作正常。

-DBOOST_NO_CXX11_REF_QUALIFIERS

1 个答案:

答案 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;但是你明白了。