Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: GoldWolf
Udoskonalił: Piotr DejaVu Szawdyński
Język C++

strcoll

[funkcja] Porównuje dwa łańcuchy znaków leksykograficznie.

Składnia

C/C++
#include <cstring>

int strcoll( const char * str1, const char * str2 );

Opis szczegółowy

Funkcja porównuje dwa łańcuchy znaków str1 i str2, oraz zwraca liczbę będącą opisem zależności między nimi. Działa podobnie jak » standard Cstrcmp, jednak do porównania używa zasad określonych przez LC_COLLATE, która określona jest przez funkcję » standard Csetlocale.

Argumenty

Nazwa argumentuOpis
str1łańcuch znaków
str2łańcuch znaków

Zwracana wartość

Zwraca liczbęOpis
0(zero)str1 = str2
mniejsza od 0(zero) str1 < str2
większa od 0(zero) str1 > str2

Dodatkowe informacje

W związku z tym, że funkcja strcoll porównuje łańcuchy znaków leksykograficznie to jest ona dużo wolniejsza niż » standard Cstrcmp. Niniejsza funkcja powinna być używana tylko wtedy, gdy porządek loksograficzny jest inny dla używanej strony kodowej niż dla standardowego kodowania.

Przykład

C/C++
#include <cstdio>
#include <cstring>
#include <clocale>

int main()
{
    char str1[] = "x a x";
    char str2[] = "x ą x";
    char str3[] = "x b x";
    printf( "Wyniki porownan:\n" );
   
    setlocale( LC_ALL, "English" );
    printf( "\nsetlocale = English\n" );
    printf( "strcmp: %d, %d\n", strcmp( str1, str2 ), strcmp( str2, str3 ) );
    printf( "strcoll: %d, %d\n", strcoll( str1, str2 ), strcoll( str2, str3 ) );
   
    setlocale( LC_ALL, "Polish" );
    printf( "\nsetlocale = Polish\n" );
    printf( "strcmp: %d, %d\n", strcmp( str1, str2 ), strcmp( str2, str3 ) );
    printf( "strcoll: %d, %d\n", strcoll( str1, str2 ), strcoll( str2, str3 ) );
   
    return 0;
}
Standardowe wyjście programu:
Wyniki porownan:

setlocale = English
strcmp: -1, 1
strcoll: 1, -1

setlocale = Polish
strcmp: -1, 1
strcoll: -1, -1

Zagadnienia powiązane

stricollPorównuje dwa łańcuchy znaków leksykograficznie (ignoruje wielkość liter). (funkcja)
strcmpPorównuje dwa łańcuchy znaków. (funkcja)
strncmpPorównuje określoną liczbę znaków dwóch łańcuchów znaków. (funkcja)
strxfrmPrzekształca łańcuch znaków w oparciu o ustawienia lokalne. (funkcja)

Linki zewnętrzne