Le QHash :: contient la méthode sensible à la casse ou insensible à la casse?
Question
J'ai un QHash<QString,QString>
.
J'utilise l'expression suivante pour vérifier si une valeur est là dans le QHash::keys()
ou non.
//programme
QHash<QString,QString> samplehash;
QString value = "somevalue";
if(samplehash.contains(value)) // Condition - 1
{
//some code
}
Parfois, les conditions ci-dessus correspond, parfois pour les mêmes lettres de cas différents. Est-ce le cas sensible méthode QHash::contains
?
La solution
QHash.contains()
est sensible à la casse comme John T mentionné. Sans le code il n'y a pas grand-chose à comprendre. Vous pouvez l'imaginer faire une entre les touches ==
.
S'il vous plaît ne pas oublier que l'accès à un élément non existant via []
crée une entrée vide dans le hachage, cela pourrait être ce qui cause votre bug. Ne pas insérer contains
une entrée dans le hachage, ni ne value
Autres conseils
Il est sensible à la casse. La pratique courante de traitement de données provenant de sources multiples et en le comparant est de convertir tout le même format d'abord, ce qui implique généralement faire tout en minuscules avant la comparaison.
Ceci est une pratique courante, en particulier sur les sites Web pour les connexions, ou la manipulation d'entrée de l'utilisateur dans les applications pour éviter l'ancien «
Une solution pourrait être de sous-classe et passer outre la Mais la solution de John T est certainement mieux si elle répond à vos contraintes. QString
faire la operator==
comparaison avec le mode insensible à la casse, en utilisant QString :: comparer .