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

C++编写字符串逆序输出程序运行无输出,求问题原因及解决方法

问题原因
  • 循环执行条件完全不成立:你将循环变量i的初始值设为输入字符串的长度index,但循环判断条件写为i <= 0。只要输入的字符串非空,初始i值必然大于0,首次判断就不满足条件,循环全程不会执行,因此没有任何输出。
  • 存在索引越界隐患:C++中std::string的合法索引范围是0 ~ 长度-1,即便修改循环条件让循环运行,初始i = userInput.length()也会超出合法索引范围,调用at()方法时会抛出std::out_of_range异常。
  • 原代码隐含有头文件缺失问题:使用std::string需要引入<string>头文件,部分编译器会通过<iostream>间接引入该头文件不触发报错,但不符合C++标准规范。
修复方案

调整for循环的初始值、判断条件即可,修正后的完整代码如下:

#include <iostream>
#include <string>
using namespace std;
int main() {
    int i;
    string userInput;
    int index;

    getline(cin, userInput);
    index = userInput.length();
    // 从最后一个合法索引开始遍历,直到索引为0
    for(i = index - 1; i >= 0; i--) {
        cout << userInput.at(i);
    }
    // 输出换行符让结果展示更规范
    cout << endl;
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:08