[导入]输入流的读取方法read()、readsome()比较

[导入]输入流的读取方法read()、readsome()比较
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

你可能感兴趣的:([导入]输入流的读取方法read()、readsome()比较)