Является ли метод QHash::contains чувствительным к регистру или учитывает регистр?

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

  •  21-08-2019
  •  | 
  •  

Вопрос

у меня есть 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::сравнить.

Но решение Джон Т. определенно лучше, если он соответствует вашим ограничениям.

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