0

我有一个QHash<QString,QString>. 我使用以下表达式来检查值是否存在QHash::keys()

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

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

4

3 回答 3

5

QHash.contains()正如 John T 所提到的,它区分大小写。没有代码,就没有什么可弄清楚的了。你可以想象它==在键之间做一个。

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

于 2009-07-04T01:52:42.093 回答
2

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

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

于 2009-07-03T06:39:33.013 回答
0

一种解决方案可能是使用QString::compareQString子类化并覆盖operator==以不区分大小写模式进行比较。

但是,如果John T的解决方案符合您的限制条件,它肯定会更好。

于 2017-08-17T11:47:29.267 回答