2009-07-03 85 views
0

我有QHash<QString,QString>。 我使用以下表达式来检查QHash::keys()中是否有值。QHash :: contains方法是否区分大小写或不区分大小写?

//programme 
QHash<QString,QString> samplehash; 
QString value = "somevalue"; 
if(samplehash.contains(value)) // Condition - 1 
{ 
//some code 
} 

有时上述条件匹配,有时不适用于不同情况下的相同字母。 QHash::contains方法是否区分大小写?

回答

4

QHash.contains()如John T所述,区分大小写。没有代码,就没有太多的想法。你可以想象它在按键之间做一个==

请不要忘记,通过[]访问不存在的元素将在哈希中创建一个空条目,这可能是导致您的错误的原因。 contains不插入一个进入散列,同样没有value

2

区分大小写。处理来自多个来源的数据并对其进行比较的通常做法是首先将其全部转换为相同格式,这通常涉及在比较之前将所有内容都设为小写。

这是一种常见的做法,特别是在处理登录的网站或应用程序中的用户输入,以避免旧的“PEBKAC”情况,并使用户更容易。

+0

但是,有时比较起作用,有时它不起作用。而且我知道,QHash中的键不会改变。价值部分有时可以是小写或大写。 – Ajay 2009-07-03 06:43:06

0

一种解决方案可能是子类QString和覆盖operator==做不区分大小写模式下的比较,使用QString::compare

但是,解决方案约翰T肯定是更好的,如果它符合你的约束。