首页 > 解决方案 > 如何使用 C++ 中的函数计算出现在字符串中的字符类型?

问题描述

我的任务目标是编写一个 C++ 程序,它接受两个变量,一个字符值和一个字符串值。然后,该程序使用称为int CountCharacters()的用户定义函数,该程序应该计算用户输入的字符值在用户输入的字符串值中的次数。

到目前为止,我已经能够编写我认为至少是一个良好基础的代码,但是当我运行它时,我得到一个疯狂的大数字,每次运行程序时它也会改变。

以下是我到目前为止编写的程序:

测试输入:n 星期一

预期产出:1

接收输出:22091

#include <iostream>
using namespace std;

int CountCharacters(char userChar, string userString)  {
   
   int casesFound = 0;
   int n = userString.length();
   
   for (int i = 1; i < n; i++)  {
      if (userString[i] == userChar)  {
         casesFound = casesFound + 1;
      }
   }
   
   return casesFound;
}

int main() {
   
   char cVal;
   string sVal;
   int casesFound;
   
   cin >> cVal;
   getline(cin, sVal);
   
   CountCharacters(cVal, sVal);
   
   cout << casesFound << endl;

   return 0;
}

标签: c++stringfunctionchar

解决方案


你得到不同数字的原因是你在casesFound没有分配值的情况下输出。读取未初始化的变量会使您的程序具有未定义的行为——因此任何事情都可能发生。如果您的函数返回1,则无关紧要,因为您没有将该值分配给casesFound. 您可以将返回的函数的值分配给casesfound这样的:

casesFound = CountCharacters(cVal,sVal);

然后继续

cout<<casesFound;

或者您可以直接打印返回值而不将其分配给变量:

std::cout << CountCharacters(cVal, sVal) << '\n';

另请注意,您的循环中有错误。数组和字符串等中的第一个索引在0C++ 中,而不是1,因此您无法计算Min Monday


推荐阅读