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

C++新手求助:如何判断整数是否存在于字符串中?

解决整数x在拼接字符串中的计数问题

问题根源

你的代码有两个核心问题导致count始终为0:

  • 字符与整数的类型不匹配:字符串num里的每个元素是字符型数字(比如'1'的ASCII值是49),而你直接拿它和整数x(比如1)比较,两者数值完全不同,永远不会相等。
  • 循环越界:第二个for循环的条件i <= num.size()错误,字符串下标从0开始,最大有效下标是num.size()-1,这个条件会让你访问到字符串末尾之外的内存,可能引发未知错误。

修正后的代码

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
  int n, x;
  cin >> n >> x;
  string num;
  int count = 0;
  for (int i = 1; i <= n; i++) {
    num.append(to_string(i));
  }
  // 把整数x转成对应的字符,比如x=3转成'3'
  char target = '0' + x;
  // 修正循环条件,避免越界
  for (int i = 0; i < num.size(); i++) {
    if (num[i] == target) {
      count += 1;
    }
  }
  cout << num << endl;
  cout << count << endl;
  return 0;
}

关键修改说明

  1. 类型转换:用'0' + x把整数x转成对应的字符。因为字符'0'到'9'的ASCII值是连续的,比如'0'是48,加3就得到51,也就是字符'3'的ASCII值,这样就能和字符串里的字符正确比较了。
  2. 循环条件修正:把i <= num.size()改成i < num.size(),确保只访问字符串的有效下标范围。

如果你想换一种思路,也可以把字符串里的字符转成整数再和x比较,比如(num[i] - '0') == x,效果是一样的,哪种好懂用哪种就行。

内容的提问来源于stack exchange,提问作者asqweermayyam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:10:37