【问题标题】:Loading a file into a vector<unsigned char>将文件加载到向量中<unsigned char>
【发布时间】:2012-04-17 14:28:46
【问题描述】:

这个问题和Loading a file into a vector很像;但是,在这种情况下,我想将它加载到一个无符号字符向量中。

使用另一个问题的代码,加载无符号字符向量的最佳方法是什么?

std::vector<char> vec;  // Would like this to be std::vector<unsigned char> vec;
std::ifstream file;
file.exceptions(
    std::ifstream::badbit
  | std::ifstream::failbit
  | std::ifstream::eofbit);
file.open("test.txt");
file.seekg(0, std::ios::end);
std::streampos length(file.tellg());
if (length) {
    file.seekg(0, std::ios::beg);
    vec.resize(static_cast<std::size_t>(length));
    file.read(&vec.front(), static_cast<std::size_t>(length));
}

【问题讨论】:

    标签: c++ iostream


    【解决方案1】:

    std::vector&lt;char&gt; vec; 更改为std::vector&lt;unsigned char&gt; vec;

    【讨论】:

    • 执行此操作时出现以下编译错误:从 'unsigned char*' 到 'std::basic_istream::char_type* {aka char*}' 的无效转换
    • @MachoMatt 在调用 read 函数的第一个参数中添加强制转换:reinterpret_cast&lt;char*&gt;(&amp;vec.front())
    • 接受@benjamin-lindley 的评论。需要接受的答案和评论。
    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    相关资源
    最近更新 更多