QMap::contains() 未返回预期值
我有一个包含 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 ?
I have a class that contains a QMap object:
QMap<QString, Connection*> users;
Now, in the following function Foo(), the if clause always returns false but when I iterate through the map, the compared QString, i.e., str1 is present in the keys.
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();
}
}
Am I doing something wrong? Why doesn't contains() return true ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 unicode,两个字符串可能呈现相同但实际上不同。假设是这种情况,您需要首先规范化字符串:
当然,在将字符串放入用户映射之前,您还需要对其进行规范化。
With unicode, two strings may be rendered the same but actually be different. Assuming that's the case you'll want to normalize the strings first:
Of course, you'll need to normalize the string before you put it in your users map as well.