Windows IStream接口在std :: istream上的应用

4

在Windows平台的C++中,是否有简单方法将现有的std::stream对象创建为(COM) IStream接口?

一个示例是使用IWICStream::InitializeFromIStream()std::cin读取图像。


IStream是一个接口,需要你提供实现。通常只需要实现Read和Seek,对于其余的返回E_NOTIMPL即可。不要尝试从类似std :: cin的文本流中读取二进制数据。 - Hans Passant
@HansPassant 如果您首先正确设置它,从cin读取二进制数据是可以的:https://dev59.com/iGsz5IYBdhLWcg3w5ME0#11259588。在Windows上没有理由使管道受到破坏。 - Mark Ransom
1个回答

4

目前还没有标准的实现方法。您需要编写自己的类(或找到第三方类),实现IStream接口,并在必要时内部委托给std::stream。 但是,实现IStream :: Stat()可能会遇到问题,该函数通常用于检索流的数据大小。在std::cin的情况下,您将不知道提供了多少数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接