Funkcia strcoll () v C ++ porovnáva dva koncové reťazce s hodnotou Null. Porovnanie je založené na aktuálnom miestnom prostredí definovanom v kategórii LC_COLLATE.
strcmp () stačí na väčšinu porovnaní reťazcov, ale pri práci so znakmi unicode niekedy existujú určité nuansy, ktoré spôsobujú nesprávne porovnanie reťazcov bajt.
Napríklad ak porovnávate dva reťazce v španielskom jazyku, môžu obsahovať zvýraznené znaky ako á, é, í, ó, ú, ü, ñ, ¿, ¡atď.
Štandardne sú tieto zvýraznené znaky za celou abecedou a, b, c … z. Takéto porovnanie by bolo chybné, pretože rôzne prízvuky a by mali skutočne prísť pred b.
strcoll () používa na vykonanie porovnania miestne nastavenie, ktoré v takýchto prípadoch poskytuje presnejší výsledok.
Je definované v hlavičkovom súbore.
strcoll () prototyp
int strcoll (const char * lhs, const char * rhs);
Funkcia strcoll () má dva argumenty: lhs a rhs. Porovnáva obsah lhs a rhs na základe aktuálneho miestneho nastavenia kategórie LC_COLLATE.
strcoll () parametre
- lhs a rhs: Ukazovateľ na null ukončené reťazce na porovnanie.
strcoll () Vrátená hodnota
Funkcia strcoll () vracia a:
- kladná hodnota, ak je prvý odlišný znak v lhs väčší ako zodpovedajúci znak v rhs.
- záporná hodnota, ak je prvý odlišný znak v lhs menší ako zodpovedajúci znak v rhs.
- 0, ak sú lhs a rhs rovnaké.
Príklad: Ako funguje funkcia 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 spustení programu bude výstup:
V súčasnom prostredí Armstrong predchádza armádu