É o QHash :: contém método maiúsculas de minúsculas ou maiúsculas e minúsculas?

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

  •  21-08-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top