C ++ strcoll () - C ++ Standart Kitaplığı

C ++ 'daki strcoll () işlevi, iki boş sonlandırıcı dizeyi karşılaştırır. Karşılaştırma, LC_COLLATE kategorisi tarafından tanımlanan geçerli yerel ayara dayanmaktadır.

strcmp () çoğu dize karşılaştırması için yeterlidir, ancak unicode karakterlerle uğraşırken bazen bayttan bayta dizge karşılaştırmasını yanlış yapan belirli nüanslar vardır.

Örneğin, İspanyolca dilinde iki dizeyi karşılaştırıyorsanız, bunlar á, é, í, ó, ú, ü, ñ, ¿, ¡gibi aksanlı karakterler içerebilir.

Varsayılan olarak, bu tür vurgulu karakterler a, b, c… z alfabesinin tamamından sonra gelir. Böyle bir karşılaştırma hatalı olacaktır çünkü a'nın farklı aksanları aslında b'den önce gelmelidir.

strcoll (), karşılaştırmayı gerçekleştirmek için bu tür durumlarda daha doğru bir sonuç verecek şekilde mevcut yerel ayarı kullanır.

Başlık dosyasında tanımlanmıştır.

strcoll () prototip

 int strcoll (const char * lhs, const char * rhs);

Strcoll () işlevi iki argüman alır: lhs ve rhs. LC_COLLATE kategorisinin mevcut yerel ayarına göre lhs ve rhs içeriğini karşılaştırır.

strcoll () Parametreler

  • lhs ve rhs: Karşılaştırmak için boş sonlandırılmış dizelerin işaretçisi.

strcoll () Dönüş değeri

Strcoll () işlevi bir:

  • lhs'deki ilk farklı karakter rhs'deki karşılık gelen karakterden büyükse pozitif değer.
  • lhs'deki ilk farklı karakter rhs'deki karşılık gelen karakterden küçükse negatif değer.
  • Lhs ve rhs eşitse 0.

Örnek: strcoll () işlevi nasıl çalışır?

 #include #include using namespace std; int main() ( char lhs() = "Armstrong"; char rhs() = "Army"; int result; result = strcoll(lhs,rhs); cout < 0) cout << rhs << " precedes " << lhs << endl; else if (result < 0) cout << lhs << " precedes " << rhs << endl; else cout << lhs << " and " << rhs << " are same" << endl; return 0; )

Programı çalıştırdığınızda, çıktı:

 Şu anki yerelde Armstrong Ordu'dan önce geliyor

Ilginç makaleler...