gpt4 book ai didi

c++ - for循环没有被执行

转载 作者:行者123 更新时间:2023-11-28 03:33:48 27 4
gpt4 key购买 nike

我有以下代码片段,我试图在其中将一些语句打印到 XML 文件中:

void parseXML::writeStruct(std::fstream& abc,std::string prnt)
{
for (map<string,struct structSet>::iterator it = structData.begin();it != structData.end();it++)
{
if (((it->second.parent.compare("")==0) && (it->second.written == false)))
{
bool write = true;
if (it->second.type.compare("")==0)
{
for (set<std::string>::iterator i = it->second.fields.begin(); i != it->second.fields.end(); i++)
{
map<string,struct fieldSet>::iterator fd = fieldData.find(*i);
if (fd != fieldData.end())
{
std::string type = fd->second.type;
map<string,struct structSet>::iterator ntC = structData.find(type);
if (ntC != structData.end())
{
if (ntC->second.type.compare("") != 0)
{
map<string,struct structSet>::iterator ntC = structData.find(ntC->second.type);
if (ntC == structData.end()|| ntC->second.type.compare("")!= 0||ntC->second.written == false)
{
continue;
}

}
else
{
map<string,struct structSet>::iterator ntC = structData.find(ntC->second.type);
if (ntC->second.parent.compare(it->second.name))
{
}
else if (ntC->second.written == true)
{
abc << INDENT << "\t" <<"\t" << "<nonterminal ref= \"" << ntC->second.name.c_str() << "\">" << std::endl;
abc << INDENT << "\t" << "\t" <<"\t" << "<name>" << fd->second.name.c_str() << "</name>" << std::endl;
abc << INDENT << "\t"<< "\t" << "</nonterminal >" << std::endl;
}
}
}

问题是它没有执行第一个 for 循环:

for (map<string,struct structSet>::iterator it = structData.begin(); it != structData.end(); it++)

这可能是什么原因?

最佳答案

这是一个(希望)完整列表,对于显而易见的条目感到抱歉,但我们不知道您的经验如何:

  • structData 为空
  • structData 已损坏,导致应用程序崩溃
  • parseXML::writeStruct 从未执行过
  • for 循环已执行,但以下 (if, for) 条件失败,您错误地解释了它。

选择调试器或添加跟踪消息(不要忘记使用 endl,因为输出通常是行缓冲的,在发生崩溃时会丢失)。

注意:只发布代码的相关部分,其余部分对我们来说只是噪音(除非您想要有 https://codereview.stackexchange.com/ 的代码审查)

关于c++ - for循环没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749961/

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