QMAP ::包括()没有返回预期值
我有一个包含QMAP对象的类:QMAP ::包括()没有返回预期值
QMap<QString, Connection*> users;
现在,在下面的函数foo(),if子句总是返回false,但是当我遍历通过映射,比较的QString,即str1出现在键中。
void Foo(QString& str1, QString& str2)
{
if(users.contains(str1))
users[str1]->doStuff(str2);
else
{
for(QMap<QString, Connection>::iterator iter = users.begin();
iter!= users.end();iter++)
qDebug()<<iter.key();
}
}
我做错了什么?为什么不包含()返回true?
使用unicode时,两个字符串可能会呈现相同但实际上不同。假设这是你要第一normalize字符串的情况:
str = str.normalize(QString::NormalizationForm_D);
if (users.contains(str))
// do something useful
当然,你需要你把它放在你的用户之前映射以及正常化的字符串。
即使在将QString存储到QMap之前且在检查之前对它进行规范化之后,contains()仅返回false。 – 2010-10-21 17:46:15
请向我们展示字符串以何种方式不同。例如,'qDebug() 2010-10-21 17:55:55
清洁后的项目和重建,它的工作。谢谢。 – 2010-10-21 17:56:27
在你的问题中是否有错字?你说'str2'出现在键中,但是你正在检查'users'是否包含'str1'。 – 2010-10-21 17:21:49
我已经完成了必要的编辑。 – 2010-10-21 17:26:31