هو 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" يختلط = "نوفولو noreferrer "> حالات وPEBKAC " تسهل للمستخدمين.
وحل واحد يمكن أن يكون لفئة فرعية QString
وتجاوز operator==
للقيام بالمقارنة مع وضع قضية حساسة، وذلك باستخدام <لأ href = "https://doc.qt.io/qt-5/qstring.html#compare- 2 "يختلط =" نوفولو noreferrer "> QString :: مقارنة .
ولكن الحل من جون T م> هو بالتأكيد أفضل ما اذا كان يناسب القيود الخاصة بك.