我正在尝试将QResource XML转换为istream。 XML进入的第三方签名如下所示。
play
但是如何将QResource转换为istream?
尝试使用以下内容,但无法将其转换为 ::std::unique_ptr< ::NO::Peoplefile >
peoplefile (::std::istream& is,
::xml_schema::Flags f = 0,
const ::xml_schema::Properties& p = ::xml_schema::Properties ());
。有想法吗?
::std::istream&
答案 0 :(得分:0)
由于所讨论的资源是XML,所以我假设它不是很大,并且可以轻松地整体读取到内存中。在这种情况下,您只需使用std::istringstream
...
/*
* Attempt to open the bound resource `:/some-resource.xml'.
*/
if (QFile f(":/some-resource.xml"); f.open(QIODevice::ReadOnly)) {
/*
* Read its contents into an std::string which is used to
* initialize an std::istringstream.
*/
std::istringstream is(f.readAll().toStdString());
/*
* Pass the istringstream as the first parameter to peoplefile.
*/
auto result = peoplefile(is, 0/* flags */, ::xml_schema::Properties());
}