fstream unix проблема в чтении - PullRequest
3 голосов
/ 02 февраля 2011

Я пытаюсь прочитать из двоичного файла в 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 Ответ

2 голосов
/ 02 февраля 2011

Попробуйте seekg вместо seekp, и есть ли в файле 400 байт?мне кажется, это работает нормально, если вы вводите файл, который содержит более 400 байтов.Если меньше, то tellg после чтения отчетов -1, но gcount() правильно.

Кроме того, после открытия файла - проверьте, действительно ли файл был открыт, например

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