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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top