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();
}
}
Я делаю что-то неправильно? Почему не содержит () вернуть правду?
Решение
С Unicode две строки могут быть сделаны одинаковыми, но на самом деле отличаются. Предполагая, что это тот случай, когда вы захотите нормализовать Струны первыми:
str = str.normalize(QString::NormalizationForm_D);
if (users.contains(str))
// do something useful
Конечно, вам нужно нормализовать строку, прежде чем вы поместите ее на карту пользователей.
Не связан с StackOverflow