C++ fstream读取文件多读一行问题

C++ fstream多读一行,末尾行重复读取,末尾行读了两次,fstream读取txt出错问题。
最近在用c++的fstream读取txt文件时发现末尾一行会被读取两次,原因好像是因为到达文件末尾时,eof仍然是false,只有继续往下读时才会变成true。
网上看了许多方法无果,无非是改成什么readfile.peek()!=EOF,这里将我的解决方法分享一下

解决方法

在while循环里读取一个,先进行判断是否到文件末尾,到末尾则beak,这样就不会读进去了。

// 读取文件
void readFile(STU stu[])
{
    ifstream fin;
    n = 0;
    fin.open("output.txt");
    string  stuN,ClassN;
    char date[15];
    int  stuID,ClassX,ClassL;
    while (!fin.eof())
    {
        fin>>date; // 先试着读取一个
        if(fin.eof()) // 到达文件末尾则break
            break;
        fin>>ClassX>>ClassN>>stuN>>stuID>>ClassL;
		// 写数据到stu[n]
        stu[n++].input(date,ClassX,ClassN,stuN,stuID,ClassL);
    }
    fin.close();
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值