É o QHash :: contém método maiúsculas de minúsculas ou maiúsculas e minúsculas?
Pergunta
Eu tenho um QHash<QString,QString>
.
Eu uso a seguinte expressão para verificar se um valor existe no QHash::keys()
ou não.
//programme
QHash<QString,QString> samplehash;
QString value = "somevalue";
if(samplehash.contains(value)) // Condition - 1
{
//some code
}
Às vezes, as condições acima jogos, às vezes não para as mesmas letras de caso diferente. É o método QHash::contains
maiúsculas de minúsculas?
Solução
QHash.contains()
é sensível a maiúsculas como John T mencionado. Sem o código, não há muito para descobrir. Você pode imaginá-lo fazendo um ==
entre as teclas.
Por favor, não se esqueça que o acesso a um elemento inexistente via []
irá criar uma entrada vazia no hash, este pode ser o que faz com que seu bug. não contains
não inserir uma entrada em hash, nem faz value
Outras dicas
É sensível a maiúsculas. A prática comum para lidar com dados de várias fontes e compará-lo é converter tudo para o mesmo formato em primeiro lugar, que geralmente envolve fazer tudo em minúsculas antes de comparação.
Esta é uma prática comum, especialmente em sites para lidar com logins, ou a entrada do usuário em aplicações para evitar o velho ' PEBKAC ' situações e tornar mais fácil para os usuários.
Uma solução poderia ser a QString
subclasse e substituir o operator==
fazer a comparação com o modo de maiúsculas e minúsculas, usando QString :: comparar .
Mas a solução de John T é definitivamente melhor se adapta às suas restrições.