gpt4 book ai didi

c++ - 读取整个 std::ifstream 到堆

转载 作者:太空狗 更新时间:2023-10-29 19:58:50 25 4
gpt4 key购买 nike

我无法弄清楚为什么这不起作用。据我所知,它似乎并没有读取整个图像文件......虽然我不能说。我基本上有一些我想读到堆上的原始图像。

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 是有充分理由的。

关于c++ - 读取整个 std::ifstream 到堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17444709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com