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

如何在输入文件数据耗尽时终止C++程序中的while循环?

解决文件读取耗尽时提前终止while循环的问题

要在文件数据耗尽时立即终止循环,核心是检查输入操作的状态——当cin无法读取更多数据时(比如文件结束),它的状态会变为失败,我们可以利用这一点来终止循环。

修改后的代码

#include<iostream>
using namespace std;
#define max 20

int main()
{
    string arr[max][4];
    int i=0, j;
    while(i<max)
    {
        bool readComplete = true;
        for(j=0; j<4; j++)
        {
            // 读取时直接检查是否成功
            if(!(cin >> arr[i][j])) {
                readComplete = false;
                break;
            }
            if(j==2)
                arr[i][1] = arr[i][1]+arr[i][2];
        }
        // 如果某次读取失败(文件耗尽或格式错误),终止外层循环
        if(!readComplete) {
            break;
        }
        i++;
    }
    return 0;
}

关键逻辑说明

  • cin >> arr[i][j]会返回cin对象本身,当读取失败时(比如文件已读完),这个对象在布尔语境下会被解析为false,我们用!(cin >> arr[i][j])捕获这个状态。
  • 一旦读取失败,标记readComplete为false并跳出内层for循环,随后外层while循环也会终止,不会继续执行i++,实现提前终止的需求。
  • 这种方式不仅能处理文件耗尽的情况,还能处理其他输入错误(比如数据格式不匹配),鲁棒性更强。

使用方式

运行程序时通过重定向读取文件即可:

./your_program < data.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:40:19