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

C++文件读取代码if判断分支未生效,无法输出预期data[4]值如何解决?

问题解决方法

核心错误点

  • 条件判断类型不匹配:data[2]是字符类型,第二行对应存储的值为字符'2'(ASCII码为50),你直接和整数2对比,条件永远不成立,所以不会走输出data[4]的分支。
  • 循环判断逻辑缺陷:while(!file.eof())会在文件读取结束后多执行一次循环,可能输出无效垃圾值。
  • 固定长度字符数组存在缓冲区溢出风险,读取内容超过20字节时会触发内存越界问题。

修改后可直接运行的代码

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(){
    fstream file;
    file.open("file.txt", ios::in);

    if(file.is_open()){
        // 改用std::string存储读取内容,避免缓冲区溢出
        string data;
        // 直接用流对象作为循环判断条件,自动处理读取结束逻辑
        while(file >> data)
        {
            // 对比对象改为字符'2',匹配类型
            if('2' == data[2])
                cout << data[4] << endl;
            else 
                cout << data[2] << endl;
        }
    }
    file.close();
    return 0;                                                                     
}

运行效果

修改后输出完全符合你的预期:

1
K
3
4
5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:05