如何使用C+中的函数计算字符串中出现的字符类型+;? 我的任务是编写一个C++程序,它包含两个变量,一个字符值和一个字符串值。然后,通过使用名为int CountCharacters()的用户定义函数,程序将计算用户输入的字符值在用户输入的字符串值中的次数 到目前为止,我已经能够把我认为至少是一个好的基础代码,但是当我运行它时,我得到一个疯狂的大数字,每次运行程序时也会发生变化。
以下是我迄今为止编写的程序: 测试输入:n星期一 预期输出:1如何使用C+中的函数计算字符串中出现的字符类型+;? 我的任务是编写一个C++程序,它包含两个变量,一个字符值和一个字符串值。然后,通过使用名为int CountCharacters()的用户定义函数,程序将计算用户输入的字符值在用户输入的字符串值中的次数 到目前为止,我已经能够把我认为至少是一个好的基础代码,但是当我运行它时,我得到一个疯狂的大数字,每次运行程序时也会发生变化。,c++,string,function,char,C++,String,Function,Char,以下是我迄今为止编写的程序: 测试输入:n星期一 预期输出:1 #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 (use
#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;
}
接收到的输出: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;
}
#包括
使用名称空间std;
int CountCharacters(char userChar,string userString){
int casesFound=0;
int n=userString.length();
对于(int i=1;i>cVal;
getline(cin、sVal);
计数字符(cVal、sVal);
cout得到不同数字的原因是,您输出的casesFound
没有给它赋值。读取未初始化的变量会使您的程序有-因此任何事情都可能发生。如果您的函数返回1
,那就不重要了,因为您没有给casesFound
赋值。您可以将返回到cases的函数值按如下方式对齐:
casesFound = CountCharacters(cVal,sVal);
然后继续
cout<<casesFound;
“代码”> CuTI认为您的意思是“代码> CASSEDIFEST = CONTHARTER(CVAL,SVAL);<代码> <代码>主代码()/代码>。此外,字符串在索引0开始,但是您的循环开始在索引1上搜索。标准C++库有一个算法,您应该使用而不是滚动自己的手动函数:<代码> CASSIONS= STD:::计数(Sval.Node.),sVal.end(),cVal);
没有编译器警告?启动命令行标志!@Ted Lyngmo抱歉,我的错,我忘了关闭问题。我现在就做。