È il QHash :: contiene metodo di case-sensitive o case-insensitive?
Domanda
Ho un QHash<QString,QString>
.
Io uso la seguente espressione per verificare se un valore è lì in QHash::keys()
oppure no.
//programme
QHash<QString,QString> samplehash;
QString value = "somevalue";
if(samplehash.contains(value)) // Condition - 1
{
//some code
}
A volte le condizioni di cui sopra partite, a volte non per le stesse lettere di caso diverso. È il metodo di QHash::contains
maiuscole e minuscole?
Soluzione
QHash.contains()
è case sensitive come John T menzionato. Senza il codice non c'è molto da capire. Si può immaginare di fare un ==
tra i tasti.
Si prega di non dimenticare che si accede a un elemento inesistente via []
creerà una voce vuota nel hash, questo potrebbe essere ciò che fa sì che il bug. contains
non inserire una voce nel hash, lo stesso vale per value
Altri suggerimenti
E 'tra maiuscole e minuscole. La pratica comune per la gestione dei dati da fonti multiple e confrontandolo è quello di convertire il tutto nello stesso formato prima, che di solito comporta rendendo tutto minuscolo prima comparatore.
Questa è una pratica comune, specialmente su siti web per la gestione di dati di accesso, o l'input dell'utente in applicazioni per evitare il vecchio ' situazioni e PEBKAC ' rendono più facile per gli utenti.
Una soluzione potrebbe essere quella di sottoclasse QString
e sovrascrivere il operator==
per fare il confronto con la modalità case-insensitive, utilizzando QString :: confrontare .
Ma la soluzione di John T è decisamente migliore se si adatta alle vostre vincoli.