Когда я записываю данные в буфер и из буфера для сохранения в файл, я обычно использую std::vector<unsigned char>
и отношусь к этим беззнаковым символам так же, как к байтам для записи чего-либо, так:
int sizeoffile = 16;
std::vector<unsigned char> buffer(sizeoffile);
std::ifstream inFile("somefile", std::ios::binary | std::ios::in);
inFile.read(buffer.data(), sizeoffile); // Argument of type unsigned char* is incompatible
// with parameter of type char*
Первому аргументу ifstream::read()
нужен указатель char
, но мой векторный буфер - unsigned char
. Какой тип приведения здесь подходит для чтения данных в мой буфер? По сути, это от char*
до unsigned char*
. Я могу использовать reinterpret_cast или приведение в стиле C, но это заставляет меня думать, что я делаю что-то не так, поскольку это не очень часто рекомендуется. Я сделал неправильный выбор типа данных (unsigned char) для своего буфера?