gpt4 book ai didi

c++ - QMap::contains() 未返回预期值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:58 25 4
gpt4 key购买 nike

我有一个包含 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();
}
}

我做错了什么吗?为什么 contains() 不返回 true ?

最佳答案

使用 unicode,两个字符串可能呈现相同但实际上不同。假设是这种情况,您需要 normalize首先是字符串:

str = str.normalize(QString::NormalizationForm_D);
if (users.contains(str))
// do something useful

当然,在将字符串放入用户映射之前,您还需要对其进行规范化。

关于c++ - QMap::contains() 未返回预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3990087/

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