я должен прочитать двоичный файл, который структурирован так: 1 байт для N, N байт, 4 байта, и т.д.ifstream двоичный файл неправильно
Вот мой код:
char length;
file >> length;
char c[ 64 ];
file.read(c, length);
c[ length ] = 0;
int ver;
file >> ver;
Проблема : ver всегда 0 (на ~ 2500 файлов), в то время как этого не должно быть. length вывести правильное значение, c тоже. И после вызова read, tellg возвращает -1.
У вас есть код, который создает вход файл? Если файл действительно является двоичным файлом, вы не должны использовать 'file.read (& length, 1);' и 'file.read (& ver, sizeof (int));'? –
Я использую std :: ifstream file (путь, std :: ios :: binary) для создания файла. Поэтому я попробовал ваше решение, это сработало. Но я не понимаю, >> оператор не может использоваться вместо чтения? И я должен был бросить & ver на char *, чтобы заставить это работать, почему? – Aulaulz
И каков код, который записывает данные в файл? –