我无法理解为什么这不起作用。从我所知,它似乎并没有读取整个图像文件...虽然我不知道。我基本上有一些原始图像,我想把它读到堆上。
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;
}
答案 0 :(得分:6)
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。
答案 1 :(得分:3)
尝试std::ifstream image(FILENAME, std::ios_base::binary);
(注意ifstream
构造函数的第二个参数)。