【发布时间】:2011-02-02 12:36:22
【问题描述】:
我正在尝试从 UNIX 上的二进制文件中读取。该文件存在,其中包含多个数据信息。
代码如下所示:
fstrean fstrHandler;
string strFileName;
char Buf[30000];
fstrHandler.open(strFileName.c_str(), ios::in | ios::binary);
fstrHandler.seekp(0, std::ios_base::beg);
std::cout<< "Posi before read= "<< fstrHandler.tellg()<<endl; //*** Show after running 0
fstrHandler.read (Buf, 400);
std::cout<< "Posi after read= "<< fstrHandler.tellg()<<endl; //*** Show after running 0
std::cout<< " gcount ()= "<< fstrHandler.gcount ()<< << endl; //*** Show after running 0
if (fstrHandler.eof ()) {
fstrHandler.clear();
}
读取后我得到文件中的位置仍然为零零,但文件不是空的。
【问题讨论】:
-
s/fstrean/fstream/。除此之外,你应该检查
fstream::open是否真的成功,例如:assert(fstrHandler.good())。 -
我没有添加,但是存在
-
并遵循下面的 cmets,assert(fstrHandler) 而不是 good()。