c++ - 如何使用 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;
}
解决方案
你得到不同数字的原因是你在casesFound
没有分配值的情况下输出。读取未初始化的变量会使您的程序具有未定义的行为——因此任何事情都可能发生。如果您的函数返回1
,则无关紧要,因为您没有将该值分配给casesFound
. 您可以将返回的函数的值分配给casesfound
这样的:
casesFound = CountCharacters(cVal,sVal);
然后继续
cout<<casesFound;
或者您可以直接打印返回值而不将其分配给变量:
std::cout << CountCharacters(cVal, sVal) << '\n';
另请注意,您的循环中有错误。数组和字符串等中的第一个索引在0
C++ 中,而不是1
,因此您无法计算M
in Monday
。
推荐阅读
- c++ - 将 char 指针传递给接受对 char 数组的引用的函数
- mysql - Rails Mysql 按关联表之一排序
- javascript - Javascript验证不适用于点击功能
- date - 在 Tableau 中将两个单独的日期字段合并为一个
- ios - iPhoneX 的 UIScrollView 内容插图 (safeAreaLayoutGuide)
- tsql - 如何返回逗号分隔的列值而不必遍历结果集
- vim - VIM,如何防止下一个注释行缩进(Tcl文件模式)
- javascript - angular4-仅在 texbox 聚焦时显示元素
- python - 求解大型非线性方程组
- c# - 未找到 Android 文本文件