相关疑难解决方法(0)

如何将二进制文件读入无符号字符的向量中

最近我一直在问编写一个函数读取二进制文件到std::vector<BYTE>哪里BYTEunsigned char.我很快就找到了这样的东西:

#include <fstream>
#include <vector>
typedef unsigned char BYTE;

std::vector<BYTE> readFile(const char* filename)
{
    // open the file:
    std::streampos fileSize;
    std::ifstream file(filename, std::ios::binary);

    // get its size:
    file.seekg(0, std::ios::end);
    fileSize = file.tellg();
    file.seekg(0, std::ios::beg);

    // read the data:
    std::vector<BYTE> fileData(fileSize);
    file.read((char*) &fileData[0], fileSize);
    return fileData;
}
Run Code Online (Sandbox Code Playgroud)

这似乎是不必要的复杂,并且char*我在呼叫时被迫使用的明确演员file.read并没有让我感觉更好.


另一种选择是使用std::istreambuf_iterator:

std::vector<BYTE> readFile(const char* filename)
{
    // open the file:
    std::ifstream file(filename, std::ios::binary);

    // read the data:
    return std::vector<BYTE>((std::istreambuf_iterator<char>(file)),
                              std::istreambuf_iterator<char>()); …
Run Code Online (Sandbox Code Playgroud)

c++ file-io binaryfiles vector

62
推荐指数
3
解决办法
6万
查看次数

标签 统计

binaryfiles ×1

c++ ×1

file-io ×1

vector ×1