You need to enable JavaScript to run this app. C++编写数字反转程序时string转int报错、核心转储问题求助
优惠活动
大模型
产品
解决方案
定价
更多

C++编写数字反转程序时string转int报错、核心转储问题求助

问题原因

  • 字符串访问越界是触发core dumped的核心原因:C++ std::string 有效索引范围为 0 ~ 长度-1,原代码循环条件写为i < n.length()+1,取值用n[n.length()-i],当i=0时会访问超出有效内容范围的\0结束符,i更大时会访问字符串分配空间外的内存,直接触发段错误。
  • 反转逻辑错误:按原循环逻辑得到的ans首字符为\0,内容不符合数字反转预期,传给stoi时会因输入非法触发异常崩溃。
  • 未处理转换溢出:stoi仅支持转换范围在int承载范围内的数字,若输入数字过长,反转后超出int最大值(通常为2147483647)也会抛出异常导致崩溃。

修正后的代码

#include <bits/stdc++.h>
using namespace std;

void solve(){
    string n, ans=""; 
    cin >> n; 

    // 修正循环边界和取值逻辑
    for(int i=0; i < n.length(); ++i){
        ans += n[n.length() - 1 - i];
    }
    // 不需要用到数值变量可以直接删除转换逻辑,需要兼容长数字建议转long long类型
    long long num = stoll(ans);

    cout << ans << "\n";
} 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int t;
    cin >>t;

    while(t--){
        solve();
    }
    return 0;
}

额外说明

如果需求仅为输出反转后的数字字符串,可完全删除数字转换逻辑,直接输出ans即可,既可以避免溢出问题,也能兼容更长的数字输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 22:45:06