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

使用for循环编写简单C++代码时遇std::out_of_range异常问题

问题解决:std::out_of_range 异常原因及修复

你的代码触发std::out_of_range异常,核心问题是for循环的边界条件错误:

  • C++字符串的索引从0开始,长度为word.size()的字符串,有效索引范围是0到word.size()-1。
  • 你写的i <= word.size()会让循环执行到i = word.size(),此时调用word.at(i)会访问超出字符串范围的内存,直接触发越界异常。

修复后的代码

#include <iostream>
using namespace std;

int main() {
    string word;
    cin >> word;

    cout << word.size() << endl;

    // 将 <= 改为 <,确保索引不越界
    for (int i = 0; i < word.size(); i++)
        cout << word.at(i) << endl;

    return 0;
}

补充说明

  • string::at()是带边界检查的成员函数,一旦索引越界就会主动抛出异常;如果用word[i]虽然不会抛异常,但属于未定义行为,可能导致程序崩溃或其他异常结果,所以边界条件必须严谨。
  • 调试时进入陌生代码窗口是因为异常触发后,调试器跳转到了标准库处理异常的逻辑中,只需回到自己的代码检查边界条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:14:53