gtkmm 从资源纯文本文件加载

gtkmm load from resource plain text file

我有一个简单的资源xml文件看起来像

<?xml version="1.0" encoding="UTF-8" ?>
<gresources>
    <gresource prefix="ui"> 
        <file preprocess="xml-stripblanks">ui.glade</file>
    </gresource>
    <gresource prefix="text-data">
        <file>definitions.txt</file>
    </gresource>
</gresources> 

并且UI加载没有问题

refBuilder->add_from_resource("/ui/ui.glade");

但我不知道如何加载和读取资源文件中定义为“definition.txt”的文本文件。

您可以使用 Gio::Resource class 的两个静态方法之一检索文件内容:open_stream_global or lookup_data_global。这是他们的签名:

  • Glib::RefPtr< InputStream > open_stream_global (const std::string& path, ResourceLookupFlags lookup_flags=RESOURCE_LOOKUP_FLAGS_NONE)
  • Glib::RefPtr< const Glib::Bytes > lookup_data_global (const std::string& path, ResourceLookupFlags lookup_flags=RESOURCE_LOOKUP_FLAGS_NONE)

如您所见,它们之间的区别在于访问数据的方式:通过 Gio stream class or Glib::Bytes(“数据数组”:字节内容 + 长度)。