You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:54:01