C ++ strcoll () - Biblioteca standard C ++

Funcția strcoll () din C ++ compară două șiruri terminale nule. Comparația se bazează pe localizarea curentă definită de categoria LC_COLLATE.

strcmp () este suficient pentru majoritatea comparațiilor de șiruri, dar atunci când avem de-a face cu caractere unicode, uneori există anumite nuanțe care fac ca comparația șir de octet la octet să fie incorectă.

De exemplu, dacă comparați două șiruri în limba spaniolă, acestea pot conține caractere accentuate precum á, é, í, ó, ú, ü, ñ, ¿, ¡etc.

În mod implicit, astfel de caractere accentuate apar după întregul alfabet al lui a, b, c … z. O astfel de comparație ar fi defectă, deoarece diferitele accente ale unui ar trebui să fie de fapt înainte de b.

strcoll () folosește locația curentă pentru a efectua comparația, oferind un rezultat mai precis în astfel de cazuri.

Este definit în fișierul antet.

strcoll () prototip

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

Funcția strcoll () ia două argumente: lhs și rhs. Compară conținutul lhs și rhs pe baza setărilor locale curente din categoria LC_COLLATE.

strcoll () Parametri

  • lhs și rhs: Pointer către șirurile terminate nule pentru a compara.

strcoll () Valoare returnată

Funcția strcoll () returnează un:

  • valoare pozitivă dacă primul caracter diferit din lhs este mai mare decât caracterul corespunzător din rhs.
  • valoare negativă dacă primul caracter diferit din lhs este mai mic decât caracterul corespunzător din rhs.
  • 0 dacă lhs și rhs sunt egale.

Exemplu: Cum funcționează funcția 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; )

Când rulați programul, ieșirea va fi:

 În localitatea actuală, Armstrong precede armata

Articole interesante...