C ++ strcoll () - C ++ Standardbibliotek

Strcoll () -funktionen i C ++ jämför två nollavslutande strängar. Jämförelsen baseras på den aktuella platsen som definieras av LC_COLLATE-kategorin.

strcmp () räcker för de flesta strängjämförelser, men när man handlar om unicode-tecken finns det ibland vissa nyanser som gör byte-till-byte-strängjämförelse felaktig.

Om du till exempel jämför två strängar på spanska kan de innehålla accentuerade tecken som á, é, í, ó, ú, ü, ñ, ¿, ¡etc.

Som standard kommer sådana accentuerade tecken efter hela alfabetet i a, b, c … z. En sådan jämförelse skulle vara felaktig eftersom de olika accenterna på a faktiskt borde komma före b.

strcoll () använder den aktuella platsen för att utföra jämförelsen vilket ger ett mer exakt resultat i sådana fall.

Det definieras i rubrikfilen.

strcoll () prototyp

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

Strcoll () -funktionen tar två argument: lhs och rhs. Den jämför innehållet i lhs och rhs baserat på den aktuella platsen för LC_COLLATE-kategorin.

strcoll () Parametrar

  • lhs och rhs: pekare till de null avslutade strängarna för att jämföra.

strcoll () Returvärde

Funktionen strcoll () returnerar a:

  • positivt värde om det första skiljetecknet i lhs är större än motsvarande tecken i rhs.
  • negativt värde om det första skiljetecknet i lhs är mindre än motsvarande tecken i rhs.
  • 0 om lhs och rhs är lika.

Exempel: Hur fungerar 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ör programmet blir resultatet:

 I det aktuella området föregår Armstrong före armén

Intressanta artiklar...