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

C++日期计算程序ifstream无法从输入文件提取整数问题求助

故障原因

1 核心逻辑错误

菜单2的文件读取、写入逻辑存在严重的顺序和重复读取问题,完全符合你反馈的无内容输出的现象:

  • 进入choice==2分支后,先执行了一次inFile >> year >> month >> day读取第一行日期,随后while循环的判断条件又执行了一次读取操作,直接跳过第一行数据
  • while循环体内额外多写了一次读取操作,会跳过后续所有奇数行的日期数据
  • 如果输入文件仅包含1行日期,while循环的判断条件读取会直接触发文件结束标识,循环体完全不执行,因此没有任何内容写入输出文件

2 潜在编码问题

如果调整逻辑后仍然读取不到整数,大概率是输入文件编码问题:Windows记事本默认保存的txt文件是带BOM的UTF-8格式,开头3个字节的BOM标识不属于数字字符,会导致>>读取整数失败,变量保持初始的0值,和你提供的调试截图表现一致。

修复方案

第一步:调整菜单2的逻辑

将choice==2的代码替换为以下内容:

else if (choice == 2)
{
    // 读取成功则处理,无需额外重复读取
    while (inFile >> year >> month >> day)
    {
        newDay.setDate(year, month, day);
        // 写入输出文件,添加换行符避免内容挤成一行
        outFile << "Your date: " << newDay.month << "/" << newDay.day << "/" << newDay.year 
                << " is the weekday " << newDay.findWeekDay() 
                << " and has a day value of " << newDay.findDayValue() 
                << " (current day is inclusive) " << endl;
    }
}

第二步:检查输入文件编码

打开dateInput.txt,选择【另存为】,编码选项选择ANSI或者UTF-8(不带BOM),保存后重新运行程序即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:36:02