繁体   English   中英

读取整个std :: ifstream到堆

[英]Read whole std::ifstream to heap

我无法解释为什么这不起作用。 从我所知,它似乎并没有读取整个图像文件...虽然我不知道。 我基本上有一些原始图像,我想读到堆上。

unsigned char* ReadImageFromFile(const char* FILENAME, unsigned int SIZE_BYTES)
{
    unsigned char *data = (unsigned char*) malloc(SIZE_BYTES);

    std::ifstream image(FILENAME);
    image.read((char*) data, SIZE_BYTES);
    image.close();

    return data;
}

1)以二进制模式打开文件

2)不返回需要释放的原始指针

std::string readImageFromFile(const char* filename)
{
    std::ifstream image(filename, std::ios::binary);
    std::ostringstream data;
    data << image.rdbuf();
    return data.str();
}

或者,如果您更喜欢编写容易出错的代码(似乎很受嵌入式人群欢迎),您可以这样做:

char* readImageFromFile(const char* filename)
{
    std::ifstream image(filename, std::ios::binary);
    std::ostrstream data;
    data << image.rdbuf();
    data.freeze();
    return data.str();
}

当然有一个很好的理由拒绝strstreams。

尝试std::ifstream image(FILENAME, std::ios_base::binary); (注意ifstream构造函数的第二个参数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM