极其简单,却明明有问题,怪事!怪事!(50分)

  • 主题发起人 主题发起人 ddev
  • 开始时间 开始时间
D

ddev

Unregistered / Unconfirmed
GUEST, unregistred user!
一件想不透的事:

在C++ Builder 5.0E中,我写一个函数传递了一个字符参数,
然后在一列表中检索匹配。

void __fastcall MyClass::AFunction(const String& szParam)
{
for(int i = 0; i < FMyList->Count; i++)
{
TMyStru* ItemStru = (TMyStru*)(FMyList->Items);
if (ItemStru->AID == szParam)
{
...
}
}
}

发现第一遍检索时,串匹配;第二次检索时,明明是相同的串,却 Pass 了 IF。
改为 if (stricmp(ItemStru->AID.c_str(), szParam.c_str()) == 0) 时,
却对了,真是怪事。谁能告诉我原因(顺便说明一下,代码逻辑肯定没问题,
就是那个比较,真搞不懂)?
 
对了,补充一点,传递参数与检索值全部是汉字,没有任何英语字母。
 
是不是该用 WideString ?
 
Ansi/Unicode的差别 ?
 
多人接受答案了。
 
后退
顶部