1

我正在尝试使用 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>
4

1 回答 1

0

写入 FILE* 不会写入磁盘,而是写入用户空间缓冲区。

为了刷新用户空间缓冲区,您应该调用fflush(或调用 fflush 的fclose)。

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

于 2015-02-22T22:48:08.487 回答