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

2025-03-01 04:41:08
推荐回答(2个)
回答1:

输出-1是因为inin到了文件的末尾以后,指针inin已经变成NULL或者指向未知位置。所以调用tellg()时,始终返回-1,表示失败。可以将featureDim适当调小,应该能返回正值。至于问题补充情况,是因为文件的读取方式未选择二进制。将ifstream inin("binarytry.dat");改成ifstream inin("binarytry.dat",std::ifstream::binary);应该能够解决。

回答2:

ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。
读到文件末,返回EOF被C++eof()捕获置流为-1
二进制,EOF返回,流正常