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

读取.txt文件时控制台文本重复显示的原因排查

解决读取TXT文件时内容重复输出的问题

你的代码出现重复输出的核心原因是循环条件的判断时机错误:

  • 原代码里while (fs)仅检查流的当前状态,当std::getline读取到文件末尾失败时,流的状态才会变为无效,但此时循环已经进入,s中仍保留着上一次读取的内容,导致最后一行被重复输出。

修正后的代码(CreateFiles.cpp)

#include "CreateFiles.h"
void createF()
{
    std::fstream fs{ "C:\\Users\\bahge\\source\\repos\\Education\\Education\\myfile.txt" };

    std::string s;

    while (std::getline(fs, s))
    {
        std::cout << s << std::endl;
    }
}

修正说明

把std::getline(fs, s)直接放到循环条件里,每次循环都会先尝试读取一行内容:

  • 读取成功时,getline返回流对象(会被转换为true),进入循环输出当前行;
  • 读取到文件末尾或读取失败时,getline返回false,循环直接终止,彻底避免重复输出最后一行的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:50:32