读书人

c++ 读取二进制文件时tellg()=-一

发布时间: 2013-09-12 22:07:04 作者: rapoo

c++ 读取二进制文件时tellg()=-1
我有文件夹binarytry.dat,里面是6行168750列的数据,都是unsigned char型。
我想读取第一行的数据,于是写了如下代码:
const size_t featureDim = 168750;
ifstream inin("binarytry.dat");
unsigned char arr[featureDim];
inin.read((char*)&arr,featureDim*sizeof(unsigned char));
cout<<inin.tellg()<<endl;//这里输出-1
inin.seekg(0,ios::end);
cout<<inin.tellg()<<endl<<endl;//这里也输出-1

我不明白这是为什么呢? c++ 二进制 tellg
[解决办法]
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

读书人网 >C++

热点推荐