gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:40:01 26 4
gpt4 key购买 nike

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

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 所在的行停止。知道我做错了什么吗?

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

最佳答案

线路存在崩溃的可能:

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

因为您在 while 循环中检查 'i!=NULLwhile循环的终止条件之一是i == NULL`。

假设 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 行放置断点并进入函数以跟踪它。

关于c++如何使用指针将字符串与动态结构字符串进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021087/

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