fstream::get的问题,偏移觉得有问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 17:59:06
一个文件,我创建时,头几个字符如下
E8 03 00 05 04 00 00 00
一共8个字符
然后我执行一段下列函数
__int32 ReadInt32(fstream& stream)
{
BYTE bytes[4];
stream.get((char*)bytes, 4);
__int32 value = toINT32(bytes);
return value;
}
读出来的数据有问题,执行这个函数两次,stream是同一个对象,第一次读出来的数据是1000,监视bytes数组内容是
E8 03 00 00
第二次读出来的是1029,bytes数组内容是
05 04 00 00
也就是说一次只读了3个字符,但是get里面的参数给的是4啊,为了证明我这个想法,我把05改为了02,把第七个字符改为了07,如下
E8 03 00 02 04 00 07 00
结果两次的结果bytes分别为E8 03 00 00和02 04 00 00,果然只读了3个
但是我把get里面的4改为5,能够正常读了,但是函数返回时出现错误Run-Time Check Failure #2 - Stack around the variable 'bytes' was corrupted.
IDE是VS2005,用的都是C++标准库,虽然说M$对自己的库支持更好,但也不至于犯这种弱智错误把,有没有高手把fstream::get的详细使用方法讲解下,谢谢

呵呵,楼主的探索精神实在值得赞赏,不过当我们遇到错误的时候最先应该是怀疑自己,这是正确的,呵呵。

我只说一句,如果楼主把这个函数看成是在获取一个字符串,而bytes不过是字符串缓冲区,你就明白了。

而你说的那个功能不叫get,叫read!呵呵!