我有一个IStream,我知道它包含一个PNG文件,但是我无法将其内容像普通I / O流一样写入文件,我不知道我做错了还是应该做将IStream写入文件的另一件事。
IStream *imageStream;
std::wstring imageName;
packager.ReadPackage(imageStream, &imageName);
std::ofstream test("mypic.png");
test<< imageStream;
基于您在此处提供的IStream
参考,是一些unested代码,它们应该可以大致执行您想要的操作:
void output_image(IStream* imageStream, const std::string& file_name)
{
std::ofstream ofs(file_name, std::ios::binary); // binary mode!!
char buffer[1024]; // temporary transfer buffer
ULONG pcbRead; // number of bytes actually read
// keep going as long as read was successful and we have data to write
while(imageStream->Read(buffer, sizeof(buffer), &pcbRead) == S_OK && pcbRead > 0)
{
ofs.write(buffer, pcbRead);
}
ofs.close();
}