先来看看以下问题

int count = 0;
while (getline(ifs,temp))
{
count++;
}

cout<<count <<endl;   // 假设输出count为2

 

count = 0;  // 重置

while (getline(ifs,temp))
{
count++;
}

cout<<count <<endl;   // 则输出count为0,不然按理来说是2·····

 

面对这种情况是因为文件流已经读取到最末尾,所以第二次继续读取的时候还是从最后读取,所以就读不到数据。

 

为了解决这一问题,我们第二次读文件流的时候也要从一开始读,所以我们要在第二次读之前添加如下代码:

ifs.clear();   // 清除文件流状态

ifs.seekg(0,ios::beg); // 定位到一开始

 1 int count = 0;
 2 while (getline(ifs,temp))
 3 {
 4 count++;
 5 }
 6 
 7 cout<<count <<endl;   // 假设输出count为2
 8 
 9

  ifs.clear();   // 清除文件流状态

  ifs.seekg(0,ios::beg); // 定位到一开始

10 
11 count = 0// 重置
12 
13 while (getline(ifs,temp))
14 {
15 count++;
16 }
17 
18 cout<<count <<endl;   //输出2

具体清参考:https://blog.csdn.net/stpeace/article/details/40693951?winzoom=1

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-06
  • 2022-12-23
  • 2022-12-23
  • 2021-04-19
  • 2022-02-05
  • 2021-09-21
猜你喜欢
  • 2021-08-31
  • 2022-12-23
  • 2017-12-04
  • 2021-10-15
  • 2021-11-17
  • 2021-12-23
  • 2021-11-09
相关资源
相似解决方案