我的任务是在句子中查找单词“EYE”(更像是一行字符),例如:EYEYECARASDFG
。正如您所看到的,“EYE”一词出现了两次,彼此重叠。我想计算
句子中“EYE”这个词出现了多少次。我编写了一些如下所示的代码:
#include <iostream>
#include <string>
using namespace std;
string sentence;
int main()
{
int i = 0;
cin >> sentence;
while()
{
if (std::string::npos != sentence.find("EYE"))
{
i++;
}
}
cout << i;
}
现在,如果没有 while
循环,它会在句子中找到 EYE,并且可以正常工作。所以我想,为了计算重叠并使代码运行直到结束,我需要循环它。所以我虽然 while 循环是最好的,但我不知道如何循环它,在 while
循环的括号中放入什么
最佳答案
首先需要 while
中的条件。如果您想要无限循环,请使用 true
作为您的语句。作为初稿,尝试用“蛮力”来完成。只需检查句子中每 3 个字母的子串是否等于“EYE”。它将是 1 个循环和 3 个条件,或者 2 个循环和 1 个条件。然后阅读一些文本搜索算法,例如 KMP 。
如果您只想让此代码运行,请使用以下代码:
int pos = 0;
while(true) {
pos = sentence.find("EYE", ++pos);
if (pos != std::string::npos) {
i++;
} else break;
}
关于C++ 在句子中查找单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13565907/