首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >For循环未执行

For循环未执行
EN

Stack Overflow用户
提问于 2012-08-01 06:29:14
回答 1查看 115关注 0票数 0

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

代码语言:javascript
复制
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循环:

代码语言:javascript
复制
for (map<string,struct structSet>::iterator it = structData.begin(); it != structData.end(); it++)

可能的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-01 06:42:30

这里(希望)是一个完整的列表,很抱歉很明显的条目,但我们不知道你有多有经验:

  • structData is empty
  • structData is corrupted,这会使从未执行过的application
  • parseXML::writeStruct崩溃,并且执行了

循环,但是以下(iffor)条件失败了,您错误地解释了这一点。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11749961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档