码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 中关于重复读取ifstream中的内容所需要注意的问题

时间:2020-06-18 01:54:52      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:clear   stp   span   情况   http   假设   while   get   seek   

先来看看以下问题

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

 

C++ 中关于重复读取ifstream中的内容所需要注意的问题

标签:clear   stp   span   情况   http   假设   while   get   seek   

原文地址:https://www.cnblogs.com/spiderljx/p/13155240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!