spider

导航

 

先来看看以下问题

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

 

posted on 2020-06-17 23:09  黑色spider  阅读(1182)  评论(0编辑  收藏  举报