Qmap :: Содержит () не возвращающееся ожидаемое значение

StackOverflow https://stackoverflow.com/questions/3990087

  •  10-10-2019
  •  | 
  •  

Вопрос

У меня есть класс, который содержит объект 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

Конечно, вам нужно нормализовать строку, прежде чем вы поместите ее на карту пользователей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top