Чтение текста из файла в массив без знака, ошибки при попытке использовать пример

Я пытаюсь использовать пример из:

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);

0

Решение

Во-первых, read() занимает char* скорее, чем unsigned char*, Во-вторых, он не возвращает количество прочитанных символов.

Вместо этого попробуйте:

myfile.read((char*)buffer, BUFFER_SIZE);
std::streamsize bytes_read = myfile.gcount();
3

Другие решения

ИМХО вывод компилятора вполне достаточен. Это говорит вам, что вы пытаетесь дать 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();
}
1

По вопросам рекламы [email protected]