C ++ strcoll () - biblioteka standardowa C ++

Funkcja strcoll () w C ++ porównuje dwa ciągi kończące o wartości null. Porównanie jest oparte na bieżących ustawieniach regionalnych zdefiniowanych przez kategorię LC_COLLATE.

strcmp () jest wystarczające dla większości porównań ciągów, ale w przypadku znaków Unicode czasami istnieją pewne niuanse, które powodują, że porównanie ciągów bajtów do bajtów jest nieprawidłowe.

Na przykład, jeśli porównujesz dwa ciągi w języku hiszpańskim, mogą one zawierać znaki akcentowane, takie jak á, é, í, ó, ú, ü, ñ, ¿, ¡itd.

Domyślnie takie akcentowane znaki pojawiają się po całym alfabecie a, b, c… z. Takie porównanie byłoby błędne, ponieważ różne akcenty a powinny faktycznie występować przed b.

strcoll () używa bieżących ustawień regionalnych do wykonania porównania, dając w takich przypadkach dokładniejszy wynik.

Jest zdefiniowany w pliku nagłówkowym.

strcoll () prototyp

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

Funkcja strcoll () przyjmuje dwa argumenty: lhs i rhs. Porównuje zawartość lhs i rhs w oparciu o bieżące ustawienia regionalne kategorii LC_COLLATE.

strcoll () Parametry

  • lhs i rhs: wskaźnik do ciągów zakończonych znakiem null do porównania.

strcoll () Zwracana wartość

Funkcja strcoll () zwraca:

  • wartość dodatnia, jeśli pierwszy różniący się znak w lhs jest większy niż odpowiadający mu znak w prawostronnych.
  • wartość ujemna, jeśli pierwszy różniący się znak w lhs jest mniejszy niż odpowiadający mu znak w prawostronnych.
  • 0, jeśli lewa oś i prawa oś są równe.

Przykład: Jak działa funkcja strcoll ()?

 #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; )

Po uruchomieniu programu wynik będzie następujący:

 W obecnej lokalizacji Armstrong poprzedza Army

Interesujące artykuły...