将QT资源转换为:: std :: istream&

时间:2019-02-25 18:12:26

标签: qt ifstream qfile

我正在尝试将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&

1 个答案:

答案 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());
}