我有文件夹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
我不明白这是为什么呢?
我测试了一下,当读到第1151个数时,tellg()=4096,我不明白这是为什么呢?
第1151个数时26
谢谢您!!
嗯嗯,确实加了ios::binary后正确了,但是我想不明白为什么呢?
读取方式会影响结果,二进制的文件应该用二进制方式读取。这可能跟文件流的内在机制有关。