可冰

冰,是沉睡着的水......

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  37 随笔 :: 5 文章 :: 94 评论 :: 0 Trackbacks
read()方法从缓冲区设备读取指定长度的字节数,返回对自身的引用.
而readsome()方法只能缓冲区中读取指定长度字节数,并返回实际已读取的字节数.
比如:
const int LEN = 20;

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

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

in.readsome( chars, LEN );
cout 
<< chars << endl;

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

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

int count = 0;

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

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

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


可冰 2005-08-15 14:29

文章来源:http://kb.cnblogs.com/archive/2005/08/15/215346.html
posted on 2005-08-15 14:29 可冰 阅读(2761) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理