Является ли метод QHash::contains чувствительным к регистру или учитывает регистр?
Вопрос
у меня есть QHash<QString,QString>
.Я использую следующее выражение, чтобы проверить, есть ли значение в QHash::keys()
или нет.
//programme
QHash<QString,QString> samplehash;
QString value = "somevalue";
if(samplehash.contains(value)) // Condition - 1
{
//some code
}
Иногда вышеуказанные условия совпадают, иногда нет, для одних и тех же букв разного регистра.Это QHash::contains
метод чувствителен к регистру?
Решение
QHash.contains()
чувствителен к регистру, как упоминал Джон Т.Без кода разобраться особо не в чем.Вы можете себе представить, что он делает ==
между клавишами.
Пожалуйста, не забывайте, что доступ к несуществующему элементу через []
создаст пустую запись в хеше, это может быть причиной вашей ошибки. contains
не вставляет запись в хеш и не делает value
Другие советы
Он чувствителен к регистру.Обычная практика обработки данных из нескольких источников и их сравнения заключается в том, чтобы сначала преобразовать их все в один и тот же формат, что обычно предполагает перевод всего текста в нижний регистр перед сравнением.
Это обычная практика, особенно на веб-сайтах для обработки входов в систему или ввода данных пользователем в приложениях, чтобы избежать старых «ПЕБКАЦ' ситуации и облегчить работу пользователей.
Одним из решений может быть создание подкласса QString
и переопределить operator==
чтобы выполнить сравнение с режимом без учета регистра, используя QString::сравнить.
Но решение Джон Т. определенно лучше, если он соответствует вашим ограничениям.