QHashがある::メソッドの大文字と小文字の区別の有無が含まれていますか?
質問
私は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()
ジョンTは、上述のように大文字と小文字が区別されます。コードなしで把握する過言ではありません。あなたは、キーの間==
をやって、それを想像することができます。
[]
を経由して非実在の要素にアクセスすると、ハッシュに空のエントリを作成することを忘れないでください、これはあなたのバグを引き起こすものであるかもしれません。 contains
はハッシュへのエントリを挿入しません、どちらも
value
ありません 他のヒント
これは、大文字と小文字が区別されます。複数のソースからのデータを処理し、それを比較するための一般的な方法は、通常、比較の前に小文字にすべてを行う必要最初と同じ形式にすべてを変換することです。
これは、古い「<のhref = 『http://en.wikipedia.org/wiki/PEBKAC』のrel = "nofollowをnoreferrerを避けるために、特にアプリケーションでログインを処理するためのウェブサイト、またはユーザー入力に、一般的に行われています「> PEBKAC の」状況や、ユーザーのために、それが容易になります。
一つの解決策は、<のhref = "https://doc.qt.io/qt-5/qstring.html#compare-を使用して、QString
をサブクラス化し、大文字と小文字を区別しないモードとの比較を行うためのoperator==
を上書きすることができ2" nofollowをnoreferrer "= REL"> QStringの:: を比較します。
しかし、のジョン・T のの解決策は間違いなく良いです。