C++ 将二进制文件读入无符号字符向量缓冲区
我正在尝试将二进制文件流读入std::vector缓冲区 但是我得到了以下错误 无法使用类型为“const std::\uu 1::vector>::value\u type*”aka“const unsigned char*”的右值初始化类型为“std::\uu 1::basic\u istream>::char\u type*”aka“const unsigned char*”的参数 我很难解释这个错误,也很难弄清楚我在阅读过程中做错了什么 如果您确实阅读了编译器的错误消息,那么慢慢地,它会准确地告诉您问题所在 首先,读取的第一个参数是char*,一个指向字符的指针 但您正在传递一个常量unsigned char*。这是因为数据,假设缓冲区是常量,显然返回一个常量无符号字符* 这就是为什么会出现编译错误。如果您现在重新阅读编译错误,跳过大约一半的单词,那么现在就完全有意义了: 无法初始化类型为“”的参数右值为的char*' 键入…'常量无符号字符*' 要修复它,缓冲区不应该是常量对象。更可取的是,它应该是一个std::vector,因此您最终实际上传递了一个char*来读取 但是,如果您坚持,您可以将其保留为无符号字符的向量,并使用reinterpret_cast将数据结果从无符号字符*转换为字符*您使向量常量为 因此,您不能更改其内容 你想改变它的内容,这就是它的目的 所以,不要让它成为常数C++ 将二进制文件读入无符号字符向量缓冲区,c++,C++,我正在尝试将二进制文件流读入std::vector缓冲区 但是我得到了以下错误 无法使用类型为“const std::\uu 1::vector>::value\u type*”aka“const unsigned char*”的右值初始化类型为“std::\uu 1::basic\u istream>::char\u type*”aka“const unsigned char*”的参数 我很难解释这个错误,也很难弄清楚我在阅读过程中做错了什么 如果您确实阅读了编译器的错误消息,那么慢慢地,它会
std::ifstream file(srcPath, std::ifstream::binary);
file.unsetf(std::ios::skipws);
const std::vector<unsigned char> buffer(bufferSize);
file.read(buffer.data(), bufferSize);
const std::vector<unsigned char> buffer(bufferSize);
file.read(buffer.data(), bufferSize);