Я пытаюсь использовать пример из:
https://stackoverflow.com/a/6832677/1816083
но у меня есть:
invalid conversion from `unsigned char*' to `char*'
initializing argument 1 of `std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::read(_CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]'
invalid conversion from `void*' to `size_t'
в соответствии:
size_t bytes_read = myfile.read((unsigned char *) buffer, BUFFER_SIZE);
Во-первых, read()
занимает char*
скорее, чем unsigned char*
, Во-вторых, он не возвращает количество прочитанных символов.
Вместо этого попробуйте:
myfile.read((char*)buffer, BUFFER_SIZE);
std::streamsize bytes_read = myfile.gcount();
ИМХО вывод компилятора вполне достаточен. Это говорит вам, что вы пытаетесь дать unsigned char*
функционировать, что ждет char*
, Кстати, есть даже название функции
std::basic_istream<_CharT, _Traits>::read(_CharT*, std::streamsize)
[with _CharT = char ...
Если тебе надо unsigned chars buffer[ ... ]
затем брось char*
unsigned char buffer[ BUFFER_SIZE ];
ifstream myfile("myfile.bin", ios::binary);
if (myfile)
{
myfile.read((char*) buffer, BUFFER_SIZE);
// ^^^^^^^
size_t bytes_read = myfile.gcount();
}