C++ TinyXML抛出访问冲突
我最近开始使用tinyXML。问题是,当我运行程序读取xml时,它返回一个访问冲突。一个共同点是:C++ TinyXML抛出访问冲突,c++,tinyxml,C++,Tinyxml,我最近开始使用tinyXML。问题是,当我运行程序读取xml时,它返回一个访问冲突。一个共同点是: doc.FirstChildElement("Map")->FirstChildElement("Width")->GetText() 使用VisualStudio调试器,我确定它为“映射”返回null,然后使用null引用调用函数 下面是第一行代码和xml XMLDocument doc; doc.LoadFile(path.c_str()); int width
doc.FirstChildElement("Map")->FirstChildElement("Width")->GetText()
使用VisualStudio调试器,我确定它为“映射”返回null,然后使用null引用调用函数
下面是第一行代码和xml
XMLDocument doc;
doc.LoadFile(path.c_str());
int width = atoi(doc.FirstChildElement("Map")->FirstChildElement("Width")->GetText());
XML:
5.
5.
1.
1.
data/tiles/dirty-base.png
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
重要的是要注意,我最初没有根标记,但在它不起作用时添加了它,尽管添加它仍然没有帮助。任何帮助都将不胜感激在我看来,您正在调用的TinyXML函数中有一个返回无效指针。尝试分别检查每个调用的结果,您将能够确定问题。在我看来,您正在调用的TinyXML函数中有一个返回了无效指针。尝试分别检查每个呼叫的结果,您将能够确定问题。更改
int width = atoi(doc.FirstChildElement("Map")->FirstChildElement("Width")->GetText());
到
它在我的电脑上工作,使用最新的tinyxml
根据TinyXml文档
您应该首先检查LoadFile返回
if (!_doc.LoadFile(filename))
{
printf("load file=[%s] failed\n", filename);
return -1;
}
然后检查元素是否存在以避免访问冲突
使用TiXmlHandle检查元素更容易
TiXmlHandle docHandle(&doc);
TiXmlElement* child = docHandle.FirstChild("Map").FirstChild("Width").ToElement();
if (child)
{
// do something useful
改变
int width = atoi(doc.FirstChildElement("Map")->FirstChildElement("Width")->GetText());
到
它在我的电脑上工作,使用最新的tinyxml
根据TinyXml文档
您应该首先检查LoadFile返回
if (!_doc.LoadFile(filename))
{
printf("load file=[%s] failed\n", filename);
return -1;
}
然后检查元素是否存在以避免访问冲突
使用TiXmlHandle检查元素更容易
TiXmlHandle docHandle(&doc);
TiXmlElement* child = docHandle.FirstChild("Map").FirstChild("Width").ToElement();
if (child)
{
// do something useful
正如您在问题的评论中所说,错误代码3是
未找到文件
您很可能已经解决了这一问题,但造成这一问题的一个常见原因就是将反斜杠放在错误的路径上
我自己也有这个问题。在做了相当多的web开发之后,由于脚本编写/标记/服务器端/客户端的恐惧不同,在同一个项目中斜杠的方向也不同(有时在发布时,您需要将斜杠的方向颠倒一半!),这种情况就发生了很多。我还是被难住了整整一个小时
为了参考起见,推迟发布这个可能的解决方案-这是谷歌在TinyXML和这个问题上最显著的结果。正如您在问题的评论中所说,错误代码3是
找不到文件
您很可能已经解决了这一问题,但造成这一问题的一个常见原因就是将反斜杠放在错误的路径上
我自己也有这个问题。在做了相当多的web开发之后,由于脚本编写/标记/服务器端/客户端的恐惧不同,在同一个项目中斜杠的方向也不同(有时在发布时,您需要将斜杠的方向颠倒一半!),这种情况就发生了很多。我还是被难住了整整一个小时
为了参考起见,延迟使用这个可能的解决方案-这是TinyXML上最突出的Google结果,也是这个问题。什么是
doc.LoadFile(…)
返回?如果不检查函数返回的指针是否为非空指针,请不要使用函数返回的指针。错误代码为3,现在查看文档时,似乎找不到该文件…即使我在调试目录的data/maps/map1.xml中有它,它应该从中运行…doc.LoadFile(…)返回什么?如果不检查函数返回的指针是否为非空指针,请不要使用函数返回的指针。错误代码为3,现在查看文档时,似乎找不到该文件…即使我在调试目录的data/maps/map1.xml中找到了它,它应该从中运行。。。