我有一个 QHash<QString,QString>.我用以下表达检查是否一个值是存在的 QHash::keys() 或者不是。

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

有时候,上述条件相匹配,有时不用相同的字母,不同的情况。是的 QHash::contains 方法的情况下敏感?

有帮助吗?

解决方案

QHash.contains()是大小写敏感的约翰Ť提及。如果没有代码没有太多弄清楚。你可以想像它做的按键之间的==

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

其他提示

这是情况的敏感性。常见的做法,用于处理来自多个来源的数据和比较是把它所有的相同的格式第一,它通常涉及使一切小写之前的比较。

这是一种常见的做法,特别是在网站上为处理登录,或输入的用户在应用程序,以避免旧的'PEBKAC'情况,并使其更便于用户使用。

一个解决方案可能是子类 QString 和复盖 operator== 要做到的比情况不敏感的方式,使用 字符串::比较.

但解决的办法的 约翰*T 绝对是更好的如果它适合你的约束。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top