Чтение из двоичного файла в vector.c ++ - PullRequest
0 голосов
/ 02 апреля 2020

Как читать из двоичного файла (байты, также известные как unsigned char in C ++ ), чтобы вектор пропустил первое значение, которое является числом без знака int 32, потому что первое значение также является размер вектора?

Первое значение - это также размер всего файла.

1 Ответ

1 голос
/ 02 апреля 2020

Вы можете попробовать что-то вроде этого:

uint32_t data_size = 0;
data_file.read((char *) &data_size, sizeof(data_size));
std::vector<uint8_t> data(data_size);
data_file.read((char *) &data[0], data_size);

Приведенный выше фрагмент кода сначала считывает размер или количество данных из файла.
A std::vector создается с использованием значения количества это было прочитано.
Наконец, данные считываются в вектор.

Редактировать 1: файлы с отображением в памяти
Возможно, вы захотите открыть файл данных как файл с отображением в памяти . Это где операционная система обрабатывает файл как память. Вам не нужно ни хранить данные в памяти, ни читать их. Поскольку API-интерфейсы файлов, отображаемых в памяти, различаются в разных операционных системах, вам придется искать в API операционной системы, чтобы узнать, как использовать эту функцию.

...