[英]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.