首页 > 解决方案 > 如何查找字符串中的字符数

问题描述

我正在尝试编写一个需要两个输入的程序:第一个是字符,第二个是字符串。然后程序将搜索字符串,一次一个地方,并跟踪用户输入的字符在字符串中出现的次数。

我似乎找不到我的错误,但for我的CountCharacters函数中的循环似乎没有迭代。任何人都可以提供任何帮助吗?

#include <iostream>
#include <string>
using namespace std;

int CountCharacters(char userChar, string userString) {
   int charCounter = 0;
   int i;
   
   for (i = 0; i > userString.length(); ++i) {
      if (userString.at(i) == userChar) {
       charCounter += 1;  
      }
   }
   return charCounter;
}


int main() {
   char userChar;
   string userString;
   
   cin >> userChar;
   getline(cin, userString);

   cout << CountCharacters(userChar, userString);

   return 0;
}

标签: c++

解决方案


正如@user4581301 指出的那样,for 循环中的条件没有意义。如果您设置 的值i = 0然后检查是否i > userString.length(),布尔表达式将始终评估为假,因为 0 永远不会大于输入单词的长度。如果您的循环条件在开始时本身评估为 false,它将永远不会开始循环。

for (i = 0; i < userString.length(); ++i)

在这里,i仍然是0,但布尔表达式检查是否i < userString.length()。在初始迭代中,0 将小于输入单词的长度,因此布尔表达式的计算结果为 true,循环将运行。


推荐阅读