我有一个库,其中包含一个默认的XML文件,表示为const char *
逐字节存储。
我希望用户能够请求此文件的句柄(作为TiXmlDocument)。
目前,我试图通过将此字符串defaultFile
(在其自己的头文件中定义)传递给TiXmlDocument.Parse()
来实现此目的。 Parse()
正在向我传回一个垃圾指针(但不是null),这会导致尝试调用SaveFile()
时崩溃。
我可以通过使用以下方法将相同的defaultFile
写入文件来解决此问题:
FILE *file;
file = fopen("temp.prme", "w");
fprintf(file, "%s", defaultParameterFile);
fclose(file);
我使用构造函数创建一个新的TiXmlDocument
,该构造函数将文件路径作为输入。这有效,但它不是一个真正的选择,因为我不想将文件保存到用户机器。
据我所知,所有构造函数都在从文件中读取字符串,然后直接发送到Parse()
。我检查了内存中传递的值,发现差异很小。
使用构造函数方法时,必须事后调用LoadFile()
。在LoadFile()
中,传递给Parse()
的字符串未终止。即使defaultFile
是。此外,所有新行(defaultFile
中列为/r/n
的行)都列为\n\n
。
我尝试修改defaultFile
以匹配我从构造函数中看到的内容,并且没有运气。有什么建议吗?
为了它的价值,defaultFile
大致如下:
const char defaultFile[] = {
/* 0x00000000 */ 0x3C, 0x3F, 0x78, 0x6D,
...
};
它大约有9000行,每行16个字节。
答案 0 :(得分:0)
直接调用Parse()
时,我在堆栈上分配TiXmlDocument
。其他函数调用正在破坏数据。我解决了这一切,一切正常。