C++统计字符串中指定字符出现次数时for循环不迭代如何解决
问题分析与修正方案
你的代码存在两个明显错误,分别对应循环不执行、字符串读取异常的问题:
- 第一个错误:
CountCharacters函数中for循环的判断条件写反
你写的条件是i > userString.length(),初始i=0时该条件永远不成立,所以循环根本不会执行,需要改为i < userString.length() - 第二个错误:输入流残留换行符导致
getline读取到空字符串
用cin >> userChar读取字符后,你按下的回车会作为换行符残留在输入缓冲区中,后续执行getline时会直接读取到这个换行符,得到空字符串,需要在cin之后加一行cin.ignore()忽略残留的换行符。
修正后完整代码
#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; cin.ignore(); // 忽略输入缓冲区残留的换行符 getline(cin, userString); cout << CountCharacters(userChar, userString); return 0; }
内容的提问来源于stack exchange,提问作者Nate Purcell
相关产品推荐
相关产品推荐

