我试图在文本中找到模式,出了什么问题?
I'm trying to find the pattern in the text,what going wrong?
#include <iostream>
using namespace std;
int main()
{
string s1="panamabananas";
string s2="nana";
int i,j,k=0;
string count="";
for(i=0;i<s1.length();i++)
{
k=0;
if(s2[k]==s1[i]);
{
count+=s2[k];
for(j=i+1;j<i+s2.length();j++)
{
k++;
if(s2[k]==s1[j])
{
count+=s2[k];
cout<<"it is: "<<count<<endl;
}
else
{
count="";
break;
}
}
}
}
cout<<"the matched string is "<<count;
return 0;
}
如果模式 s2 存在于文本 s1 中,则对其进行搜索。并管理计数器来写入模式匹配的内容。计数器最后必须等于nana
,即它表示文本中存在nana
panamabananas
。 我不明白这里出了什么问题。
看起来即使在找到模式后,您也会重置计数,因为您没有执行任何操作来突破外部 for 循环并且它继续。它将第一个字符串中的 nana 与第二个字符串中的 nana 进行比较,找到匹配项,从内部 for 循环中掉出,但随后又回到外部 for 循环中。稍后它将到达 s1 中的最后一个 n,再次触发 if 语句,并尝试将 "nas" 与 "nana" 匹配。当 s 与 n 不匹配时,它会将计数重置为 "。
无论如何,如果您添加一个 if 语句检查 k 是否是 s2 的长度,那么一旦找到模式,您就可以立即返回。
无论如何,这就是查看代码的样子。我建议使用调试器来完成它,该调试器允许您单步执行代码,以便您可以在发生时看到正在发生的事情。
相关文章:
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 格式说明符C++有什么问题
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 我的堆栈和库存清单程序的结构有什么问题?
- 此工厂功能有什么问题?
- 以下 C++ 代码有什么问题?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 它解决了什么问题,对于非真空初始化,生命周期在初始化之前就开始了