Пробую активней использовать C++, мысли вслух, натолкнулся на неочивдноедля меня поведение. (щас ис професии погонют опять)
Простейшее действие - прочитать файл.
std::fstream fin;
short int buf[2];
char ch;
int k=0;
fin.open( "RO_.raw", std::fstream::in | std::fstream::binary);
std::cout << "Pos: " << fin.tellg();
while(!fin.eof()) {
fin.read( reinterpret_cast<char *>(buf), sizeof(buf) );
std::cout << buf[0] << std::endl;
std::cout << buf[1] << std::endl;
k++;
}
fin.close();
std::cout << "Read blocks: " << k << std::endl;
Выдаёт счётчик итераций больше на 1. Читаю описание eof здесь :
This flag is set by all standard input operations when the End-of-File is reached in the sequence associated with the stream.
Вроде понято - достигли конца файла - взвели. На деле не взводится, пока нет попытки чтения за концом файла. Возможно, это при блочном чтении, при посимвольном взведёт и на последнем. Проверил, предположение ложное.
В описании open() предлагается делать так:
// get length of file:
is.seekg (0, is.end);
int length = is.tellg();
is.seekg (0, is.beg);