C ++ strcoll () - C ++ standardbibliotek

Strcoll () -funksjonen i C ++ sammenligner to nulltermineringsstrenger. Sammenligningen er basert på gjeldende lokalitet definert av kategorien LC_COLLATE.

strcmp () er nok for de fleste strengesammenligninger, men når det gjelder unicode-tegn, er det noen ganger nyanser som gjør sammenligning av byte-til-byte-streng feil.

For eksempel, hvis du sammenligner to strenger på spansk språk, kan de inneholde aksentuerte tegn som á, é, í, ó, ú, ü, ñ, ¿, ¡etc.

Som standard kommer slike aksentuerte tegn etter hele alfabetet til a, b, c … z. En slik sammenligning ville være feil fordi de forskjellige aksentene til a faktisk skulle komme før b.

strcoll () bruker gjeldende lokalitet for å utføre sammenligningen og gir et mer nøyaktig resultat i slike tilfeller.

Det er definert i topptekstfilen.

strcoll () prototype

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

Strcoll () -funksjonen tar to argumenter: lhs og rhs. Den sammenligner innholdet av lhs og rhs basert på gjeldende sted for LC_COLLATE-kategorien.

strcoll () Parametere

  • lhs og rhs: peker til null avsluttede strenger for å sammenligne.

strcoll () Returverdi

Strcoll () -funksjonen returnerer a:

  • positiv verdi hvis det første forskjellige tegnet i lhs er større enn det tilsvarende tegnet i rhs.
  • negativ verdi hvis det første forskjellige tegnet i lhs er mindre enn det tilsvarende tegnet i rhs.
  • 0 hvis lhs og rhs er like.

Eksempel: Hvordan fungerer strcoll () -funksjonen?

 #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 kjører programmet, vil utdataene være:

 I den nåværende lokaliteten går Armstrong foran hæren

Interessante artikler...