c ++如何使用指针将字符串与动态结构字符串进行比较?

时间:2013-04-15 17:22:13

标签: c++ class pointers

我必须在C ++中编写一个类的方法,当它们只给出我的名字时,它会向我显示一个类的所有属性。例如,我有一个带有a_name,a_goals和a_points的类'Team'。因此,当他们给我一个带有名称的字符串时,我必须将它与我的动态结构进行比较,并找到具有相同名称的团队来显示它。我有这段代码:

void Classificacio::mostrar(string nom) const {
    Equip eq;
    Node* i=a_inici;
    bool trobat=false;
    while(!trobat && i!=NULL) {
        if(nom.compare(i->a_equip.NomEquip())==0) trobat=true;
        else i=i->seg;
    }
    if(trobat==true) eq=i->a_equip;
    cout << eq << endl;
}

NomEquip()是一个返回团队名称的方法。 但它不起作用。每次我尝试使用调试器执行它时,它都会在if行中停止。我有什么想法吗?

编辑:想把它翻译成英文,但我忘了一些东西,这次只是复制/粘贴。

1 个答案:

答案 0 :(得分:1)

行中有可能崩溃:

if (trobat == true) eq=i->a_equip;

因为在in the i == NULL`时检查'i!= NULL loop. One of the terminating conditions of theloop is that

假设while循环因i == NULL而终止,您的if语句将取消引用未指定行为的NULL指针。

编辑1: 如果它在if (nom.compare(i->a_equip.NomEquip()) == 0)崩溃,并且我们知道i有效,则会导致NomEquip函数是一个主要的结果。

while循环更改为:

while (...)
{
  std::string nom_equip = i->a_equip.NomEquip();
  if (nom == nom_equip)
//...
}

现在将断点放在std::string行并进入函数以跟踪它。