C ++ strcoll () - C ++ Standardbibliothek

Die Funktion strcoll () in C ++ vergleicht zwei nullterminierende Zeichenfolgen. Der Vergleich basiert auf dem aktuellen Gebietsschema, das durch die Kategorie LC_COLLATE definiert ist.

strcmp () reicht für die meisten Zeichenfolgenvergleiche aus, aber beim Umgang mit Unicode-Zeichen gibt es manchmal bestimmte Nuancen, die den Vergleich von Byte-zu-Byte-Zeichenfolgen falsch machen.

Wenn Sie beispielsweise zwei Zeichenfolgen in spanischer Sprache vergleichen, können sie akzentuierte Zeichen wie á, é, í, ó, ú, ü, ñ, ¿, ¡usw. enthalten.

Standardmäßig stehen solche akzentuierten Zeichen nach dem gesamten Alphabet von a, b, c… z. Ein solcher Vergleich wäre fehlerhaft, da die verschiedenen Akzente von a tatsächlich vor b stehen sollten.

strcoll () verwendet das aktuelle Gebietsschema, um den Vergleich durchzuführen und in solchen Fällen ein genaueres Ergebnis zu erhalten.

Es ist in der Header-Datei definiert.

strcoll () Prototyp

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

Die Funktion strcoll () akzeptiert zwei Argumente: lhs und rhs. Es vergleicht den Inhalt von lhs und rhs basierend auf dem aktuellen Gebietsschema der Kategorie LC_COLLATE.

strcoll () Parameter

  • lhs und rhs: Zeiger auf die nullterminierten Zeichenfolgen zum Vergleichen.

strcoll () Rückgabewert

Die Funktion strcoll () gibt Folgendes zurück:

  • positiver Wert, wenn das erste abweichende Zeichen in lhs größer ist als das entsprechende Zeichen in rhs.
  • negativer Wert, wenn das erste abweichende Zeichen in lhs kleiner ist als das entsprechende Zeichen in rhs.
  • 0, wenn lhs und rhs gleich sind.

Beispiel: Wie funktioniert die Funktion 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; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Im aktuellen Gebietsschema geht Armstrong der Armee voraus

Interessante Beiträge...