我告诉用户要一个字符串(一个句子)。然后要求用户输入另一个字符串以在字符串1(句子)中搜索。程序必须计算第二个字符串在第一个字符串中显示的次数。我没有收到任何错误,但它不计算字母。这是我得到的结果:
输入一句话:我喜欢吃汤
输入要搜索的字符串:ou
您提供的第一个字符串中有0个字符串ou。
有人可以告诉我我做错了什么吗?我是c ++的初学者,所以我很难理解。
#include <iostream>
#include <string>
using namespace std;
int main() {
string sentence;
string search;
int count = 0;
cout<<"Enter a sentence:";
getline (cin, sentence);
cout<<"Enter string to search:";
getline (cin, search);
cout << "There are " << count << " of the string " << search << " in the first string you provided." <<"\n";
for (int i=0; i < sentence.size(); ++i)
{
if (sentence == search)
count++;
}
return count;
}
答案 0 :(得分:2)
两个问题:
count
。std::string
的文档,以找到搜索子字符串的适当方法。但是,你走在正确的轨道上。答案 1 :(得分:0)
嗯,你在计算它们之前试图输出结果。
此外,==
适用于完全匹配,而非子字符串搜索。
答案 2 :(得分:0)
在搜索字符串并设置计数的循环之后,您有cout打印行。将它移到该循环下方。
答案 3 :(得分:0)
看起来你应该把cout语句放在这个方法的最后。因为在您的代码中,输出时count始终为0
答案 4 :(得分:0)
你应该修改你的循环,使真的搜索子串并计算它们的出现次数:
string::size_type pos = sentence.find(search);
while (pos != string::npos)
{
pos = sentence.find(search, pos + search.size());
count++;
}
此外,您很可能希望在实际计算count
的值之后移动此行:
cout << "There are " << count << ...
否则,它显然会输出count
最初初始化的值(即0
)。