【发布时间】:2011-09-08 14:12:35
【问题描述】:
到目前为止,每当我想将一些原始数据传递给函数(例如从缓冲区加载图像的函数)时,我都会这样做:
void Image::load(const char* buffer, std::size_t size);
今天我查看了 Boost 库,尤其是 property_tree/xml_parser.hpp 标头,我注意到了这个函数签名:
template<typename Ptree>
void read_xml(std::basic_istream<typename Ptree::key_type::value_type>&,
Ptree &, int = 0);
这实际上让我很好奇:这是通过使用流在 C++ 中传递原始数据的正确方法吗?还是我误解了该函数的用途?
如果是前者,能否请您指出一些资源,我可以在其中学习如何为此使用流?我自己没有找到太多东西(主要是 API 参考),我也找不到 XML 解析器的 Boost 源代码。
编辑: 一些额外的细节
似乎对我想要什么有些困惑。给定一个数据缓冲区,如何将其转换为流,以使其与我在上面发布的read_xml 函数兼容?这是我的具体用例:
我正在使用SevenZip C library 从存档中读取 XML 文件。该库将为我提供一个缓冲区及其大小,我想将其放入流格式中,使其与read_xml 兼容。我怎样才能做到这一点?
【问题讨论】: