0

私は次の例を使用しようとしています:

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

2 に答える 2

3

まず、read()ではchar*なく を使用しunsigned char*ます。次に、読み取った文字数を返しません。

代わりに、次を試してください。

myfile.read((char*)buffer, BUFFER_SIZE);
std::streamsize bytes_read = myfile.gcount();
于 2013-03-07T08:36:51.980 に答える
1

私見コンパイラの出力はかなり十分です。それは、あなたが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();
}
于 2013-03-07T08:42:55.143 に答える