C++ QMap::contains()未返回预期值
我有一个包含QMap对象的类:C++ QMap::contains()未返回预期值,c++,qt,qmap,C++,Qt,Qmap,我有一个包含QMap对象的类: QMap<QString, Connection*> users; QMap用户; 现在,在下面的函数Foo()中,if子句总是返回false,但是当我遍历映射时,比较的QString,即str1出现在键中 void Foo(QString& str1, QString& str2) { if(users.contains(str1)) users[str1]->doStuff(str2);
QMap<QString, Connection*> users;
QMap用户;
现在,在下面的函数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();
}
}
void Foo(QString&str1、QString&str2)
{
if(users.contains(str1))
用户[str1]->doStuff(str2);
其他的
{
for(QMap::iterator iter=users.begin();
iter!=users.end();iter++)
qDebug()使用unicode时,两个字符串可能呈现为相同的,但实际上不同。假设是这种情况,您希望首先显示字符串:
str = str.normalize(QString::NormalizationForm_D);
if (users.contains(str))
// do something useful
当然,在将字符串放入用户映射之前,您需要对其进行规范化。您的问题中是否有输入错误?您说键中存在str2
,但您正在检查users
是否包含str1
。我已经完成了所需的编辑。即使在将QString规范化之后,也会将其存储到QMap中在检查之前,contains()只返回false。请告诉我们字符串的不同方式。例如,qDebug()在清理项目并重建后,它成功了。谢谢。