هو QHash :: يحتوي على طريقة لحالة الأحرف أو تحسس حالة الأحرف؟

StackOverflow https://stackoverflow.com/questions/1078004

  •  21-08-2019
  •  | 
  •  

سؤال

ولدي 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 هو بالتأكيد أفضل ما اذا كان يناسب القيود الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top