Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64438
  • 博文数量: 32
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 255
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-02 09:11
文章分类

全部博文(32)

文章存档

2017年(21)

2016年(11)

我的朋友

分类: C/C++

2016-12-29 16:48:57

read()方法从缓冲区设备读取指定长度的字节数,返回对自身的引用.
而readsome()方法只能缓冲区中读取指定长度字节数,并返回实际已读取的字节数.
比如:


  1. const int LEN = 20;

  2. char chars[ LEN + 1 ] = {0};
  3. ifstream in( fileName );

  4. in.read( chars, LEN );
  5. cout << chars << endl;

  6. in.readsome( chars, LEN );
  7. cout << chars << endl;
其中
    in.read( chars, LEN );
将文件从设备载入缓冲区,并读取LEN长度.
接下来
    in.readsome( chars, LEN );
就可以从缓冲区中读取.
在缓冲区中没有数据时,用readsome()得不到任何数据.

而有时候想要从设备读取指定长度的数据,但又要知道实际读取的长度,这时候就要用另一个方法: gcount()
它返回自上次读取以来所读取的字节数,因此可以这样得到实际读取的长度.
  1. int count = 0;

  2. in.read( chars, LEN );
  3. count = in.gcount();

  4. cout << "Read in " << count << " chars : " << chars << endl;


实际上,readsome()也是调用read()和gcount()来实现的.

阅读(6673) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~