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