A strcoll () függvény a C ++ - ban két null végződő karakterláncot hasonlít össze. Az összehasonlítás az LC_COLLATE kategória által meghatározott aktuális területi beállításon alapul.
Az strcmp () elegendő a legtöbb karakterlánc-összehasonlításhoz, de az unicode karakterek kezelésekor néha vannak bizonyos árnyalatok, amelyek helytelenné teszik a byte-byte karakterlánc-összehasonlítást.
Például, ha két karakterláncot hasonlít össze spanyol nyelven, ezek kiemelt karaktereket tartalmazhatnak, például á, é, í, ó, ú, ü, ñ, ¿, ¡stb.
Alapértelmezés szerint az ilyen hangsúlyos karakterek az a, b, c… z teljes ábécé után következnek. Az ilyen összehasonlítás hibás lenne, mert az a különböző akcentusainak valójában b elé kell kerülniük.
Az strcoll () az aktuális területi beállítást használja az összehasonlítás elvégzéséhez, amely pontosabb eredményt ad ilyen esetekben.
A fejlécfájlban van meghatározva.
strcoll () prototípus
int strcoll (const char * lhs, const char * rhs);
Az strcoll () függvénynek két argumentuma van: lhs és rhs. Összehasonlítja az lhs és rhs tartalmát az LC_COLLATE kategória aktuális területi beállításai alapján.
strcoll () Paraméterek
- lhs és rhs: A null végződött karakterláncok összehasonlítója.
strcoll () Visszatérési érték
Az strcoll () függvény a:
- pozitív érték, ha az első eltérő karakter lh-ban nagyobb, mint a megfelelő karakter rh-ban.
- negatív érték, ha az első eltérő karakter lh-ben kisebb, mint az rhs-ben szereplő megfelelő karakter.
- 0, ha az lhs és az rhs egyenlő.
Példa: Hogyan működik az strcoll () függvény?
#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; )
A program futtatásakor a kimenet a következő lesz:
A jelenlegi terepen Armstrong megelőzi a hadsereget