簡體   English   中英

閱讀中的fstream unix問題

[英]fstream unix problem in reading

我試圖從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();
}

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

嘗試seekg而不是seekp ,文件中有400個字節嗎? 如果您輸入的文件包含超過400個字節,這對我來說似乎沒問題。 如果更少,則讀取后的tellg報告-1,但gcount()是正確的。

此外,打開文件后 - 測試文件是否確實打開,例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM