我有QHash<QString,QString>
。
我使用以下表达式来检查QHash::keys()
中是否存在值。
//programme
QHash<QString,QString> samplehash;
QString value = "somevalue";
if(samplehash.contains(value)) // Condition - 1
{
//some code
}
有时上述条件匹配,有时不适用于不同案例的相同字母。 QHash::contains
方法区分大小写吗?
答案 0 :(得分:5)
QHash.contains()
区分大小写。没有代码,没有太多要弄清楚。您可以想象它在键之间执行==
。
请不要忘记,通过[]
访问不存在的元素会在哈希中创建一个空条目,这可能是导致您的错误的原因。 contains
不会在哈希中插入条目,value
答案 1 :(得分:2)
区分大小写。处理来自多个来源的数据并进行比较的常见做法是首先将它们全部转换为相同的格式,这通常涉及在比较之前将所有内容都设为小写。
这是一种常见的做法,特别是在处理登录的网站或应用程序中的用户输入中,以避免旧的“PEBKAC”情况并使用户更容易。
答案 2 :(得分:0)
一种解决方案可以是QString
的子类,并使用QString::compare覆盖operator==
以使用不区分大小写的模式进行比较。
但 John T 的解决方案如果符合您的约束,肯定会更好。