C ++ strcoll () - C ++ Standardbibliotek

Strcoll () -funktionen i C ++ sammenligner to nultermineringsstrenge. Sammenligningen er baseret på den aktuelle lokalitet defineret af kategorien LC_COLLATE.

strcmp () er nok til de fleste strengesammenligninger, men når der er tale om unicode-tegn, er der nogle gange visse nuancer, der gør sammenligning af byte-til-byte-streng forkert.

For eksempel, hvis du sammenligner to strenge på spansk, kan de indeholde accentuerede tegn som á, é, í, ó, ú, ü, ñ, ¿, ¡osv.

Sådanne accentuerede tegn kommer som standard efter hele alfabetet i a, b, c … z. En sådan sammenligning ville være defekt, fordi de forskellige accenter på a faktisk skulle komme før b.

strcoll () bruger den aktuelle lokalitet til at udføre sammenligningen, hvilket giver et mere præcist resultat i sådanne tilfælde.

Det er defineret i header-fil.

strcoll () prototype

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

Funktionen strcoll () tager to argumenter: lhs og rhs. Den sammenligner indholdet af lhs og rhs baseret på den aktuelle lokalitet i LC_COLLATE-kategorien.

strcoll () Parametre

  • lhs og rhs: Markør til nulterminerede strenge for at sammenligne.

strcoll () Returværdi

Funktionen strcoll () returnerer en:

  • positiv værdi, hvis den første forskellige karakter i lhs er større end den tilsvarende karakter i rhs.
  • negativ værdi, hvis den første forskellige karakter i lhs er mindre end den tilsvarende karakter i rhs.
  • 0, hvis lhs og rhs er ens.

Eksempel: Hvordan fungerer strcoll () -funktionen?

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

Når du kører programmet, vil output være:

 I den nuværende lokalitet går Armstrong forud for hæren

Interessante artikler...