我尝试比较两个字符(我的搜索字符和输入字符串中的字符),以查看给定字符串中存在多少个搜索字符。但是,无论我输入什么,我得到的计数都是0。
下面是我的代码供参考:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
int length = 0;
char ch;
char search;
int count = 0;
length = str.length();
cin >> search;
cin >> str;
for (int i = 0; i < length; i++) {
//current character
ch = str[i];
//cout << ch << " ";
if (ch == search) {
count += 1;
}
}
cout << count << " " << search << "'s" << endl;
return 0;
}
我已经尝试了ch.compare(search)
和(ch == search)
,正如我的代码中所示。这两个结果都是count
得到0。我还翻转了ch
和search
,并尝试将search
和ch
都设置为' '
,但仍然没有任何效果。下面是我尝试过的一个测试的例子。
字符串"Geek"
中有多少个e
。
我不知道我做错了什么,因为count
的输出是0。
例如:
输入:"Geek"
所需产量:2 e's
我得到的是:0 e's
我使用CLion作为我的IDE,我的语言标准设置为C++23。
1条答案
按热度按时间rjjhvcjd1#
您正在检索
str.length()
的值之前您已将用户的输入读入str
。此时str
仍然是空的,因此length
变量始终为0,因此循环永远不会运行。您需要在将输入读入
str
后**读取str.length()
值:Online Demo
话虽如此,您可以通过使用迭代器而不是索引来消除阅读
length
的需要:Online Demo
或者,使用range-for loop(内部使用迭代器):
Online Demo
或者,使用标准的
std::count()
算法而不是手动循环:Online Demo