首页 > 编程语言 > 详细

c++ fstream feekg讨论

时间:2019-10-14 18:47:04      阅读:72      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
  std::ifstream fp;
  fp.open(/*filename.c_str()*/"aa.txt", std::ios::in | std::ios::binary);

  .seekg(0,FILE_END);

  streampos filesize = fp.tellg();
  char* str = new char[10];

if (fp.seekg(10))
{
  streampos size = fp.tellg();
  cout << size<<endl;
}

if (fp.seekg((DWORD)filesize +10))
{
  streampos size = fp.tellg(); //能够读取出来数据
  cout << size<<endl;    
  if (fp.getline(str, 10))
  {
    cout << "getline" << endl; //失败,没有进入,不能读取
  }
  if (fp.fail())
  {
    cout << "fp.fail()" << endl; //能够进入
  }
  if (fp.bad())
  {
    cout << "bad" << endl; //不进入
  }
}

delete[] str; return 0; }

结果:

技术分享图片

 

 

结论:

在c++ 流文件中,seekg可以越界,需要通过fail()来判断。

不过在越界后,不能成功读取到数据,所以在读取数据前需要判断。 

c++ fstream feekg讨论

原文:https://www.cnblogs.com/qingyufei/p/11673005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!