tinyxml2 使用打印机创建文件

tinyxml2 create file using printer

我正在尝试使用 C++ 和 tinyxml2 创建一个 xml 文件,以保存游戏状态。现在我只得到一个空文件,我不知道为什么。任何帮助,将不胜感激。

FILE * pFile;
pFile = fopen ("test.xml","w");
XMLPrinter printer(pFile);
printer.OpenElement("Rooms");
printer.OpenElement("room");
printer.PushAttribute("id","RID_DUNGEON_1");
printer.PushAttribute("description","unpleasant dungeon");
printer.PushAttribute("name","dungeon");
printer.OpenElement("items");
printer.OpenElement("item");
printer.PushAttribute("id","torch");
printer.CloseElement();
printer.CloseElement();
printer.CloseElement();
printer.CloseElement();

最终结果应该是这样的:

<Rooms>
    <room id="RID_DUNGEON_1" description="unpleasant dungeon" name="dungeon">
        <items>
            <item id="torch"/>
        </items>
    </room>
</Rooms>

写入 FILE* 不会写入磁盘,它会写入用户-space 缓冲区。

为了刷新用户-space 缓冲区,您应该调用 fflush (or fclose 调用 fflush)。

如果您想确保数据已写入存储设备,您应该在 fclose 之前调用 fsync