阅读中的fstream unix问题

时间:2011-02-02 12:36:23

标签: c++ unix fstream

我试图在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();
}

读取后我得到文件中的位置仍为零,但文件不为空。

1 个答案:

答案 0 :(得分:2)

尝试seekg而不是seekp,文件中有400个字节吗?如果您输入的文件包含超过400个字节,这对我来说似乎没问题。如果更少,则读取后tellg报告-1,但gcount()是正确的。

此外,打开文件后 - 测试文件是否确实打开,例如

if (fstrHandler)
{
// do stuff
}
else
  std::cerr << "foo bar" << std::endl;