gpt4 book ai didi

c++ - 使用 Tinyxml 的段错误

转载 作者:行者123 更新时间:2023-11-28 08:27:22 24 4
gpt4 key购买 nike

我正在尝试使用 Tinyxml 递归读取 Xml 文件,但是当我尝试访问数据时出现“段错误”。这是代码:

int id=0, categoria=0;
const char* nombre;
do{
ingrediente = ingrediente->NextSiblingElement("Ingrediente");
contador++;
if(ingrediente->Attribute("id")!=NULL)
id = atoi( ingrediente->Attribute("id") );
if(ingrediente->Attribute("categoria")!=NULL)
categoria = atoi ( ingrediente->Attribute("categoria") );
if(ingrediente!=NULL)
nombre = ( ( ingrediente->FirstChild() )->ToText() )->Value();
}while(ingrediente);

出于某种原因,三个“if”行向我抛出了段错误,但我不知道问题出在哪里。

提前致谢。

最佳答案

您将在每次迭代开始时更新 ingrediente,然后在检查它不为空之前取消引用它。如果它为空,这将给出一个段错误。循环可能应该按照

for (ingrediente = first_ingrediente; 
ingrediente;
ingrediente = ingrediente->NextSiblingElement("Ingrediente"))
contador++;
if(ingrediente->Attribute("id"))
id = atoi( ingrediente->Attribute("id") );
if(ingrediente->Attribute("categoria"))
categoria = atoi ( ingrediente->Attribute("categoria") );
nombre = ingrediente->FirstChild()->ToText()->Value();
}

很抱歉在变量名中混入了一些英文;我不会说西类牙语。

或者,如果 NextSiblingElement 在您开始迭代时为您提供了第一个元素,则可以将 for 替换为 while:

while ((ingrediente = ingrediente->NextSiblingElement("Ingrediente")))

重要的一点是在获取指针之后和取消引用之前检查是否为 null。

关于c++ - 使用 Tinyxml 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com