先来看看以下问题
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