std::strcoll
Von cppreference.com
| Definiert in Header <cstring> |
||
| int strcoll( const char* lhs, const char* rhs ); |
||
Vergleicht zwei nullterminierte Byte-Strings gemäß der aktuellen Locale, wie sie durch die Kategorie LC_COLLATE definiert ist.
Inhalt |
[edit] Parameter
| lhs, rhs | - | Zeiger auf die zu vergleichenden nullterminierten Byte-Strings |
[edit] Rückgabewert
- Negativer Wert, wenn lhs kleiner als (vorangestellt) rhs ist.
- 0, wenn lhs gleich rhs ist.
- Positiver Wert, wenn lhs größer als (nachgestellt) rhs ist.
[edit] Hinweise
Die Sortierreihenfolge ist die alphabetische Reihenfolge: Die Position des Buchstabens im nationalen Alphabet (seine Äquivalenzklasse) hat eine höhere Priorität als seine Groß-/Kleinschreibung oder Variante. Innerhalb einer Äquivalenzklasse werden Kleinbuchstaben vor ihren Großbuchstaben-Äquivalenten sortiert, und die locale-spezifische Reihenfolge kann für Zeichen mit diakritischen Zeichen gelten. In einigen Locales werden Zeichengruppen als einzelne Sortiereinheiten verglichen. Zum Beispiel folgt "ch" im Tschechischen auf "h" und geht "i" voraus, und "dzs" im Ungarischen folgt auf "dz" und geht "g" voraus.
[edit] Beispiel
Führen Sie diesen Code aus
#include <clocale> #include <cstring> #include <iostream> int main() { std::setlocale(LC_COLLATE, "cs_CZ.utf8"); // Alternatively, ISO-8859-2 (a.k.a. Latin-2) // may also work on some OS: // std::setlocale(LC_COLLATE, "cs_CZ.iso88592"); const char* s1 = "hrnec"; const char* s2 = "chrt"; std::cout << "In the Czech locale: "; if (std::strcoll(s1, s2) < 0) std::cout << s1 << " before " << s2 << '\n'; else std::cout << s2 << " before " << s1 << '\n'; std::cout << "In lexicographical comparison: "; if (std::strcmp(s1, s2) < 0) std::cout << s1 << " before " << s2 << '\n'; else std::cout << s2 << " before " << s1 << '\n'; }
Ausgabe
In the Czech locale: hrnec before chrt In lexicographical comparison: chrt before hrnec
[edit] Siehe auch
| vergleicht zwei breite Zeichenketten gemäß der aktuellen Locale (Funktion) | |
| [virtuell] |
vergleicht zwei Zeichenketten anhand der Sortierregeln dieses Facets (virtual protected member function of std::collate<CharT>) |
transformiert einen String so, dass strcmp das gleiche Ergebnis wie strcoll liefert(Funktion) | |
| C-Dokumentation für strcoll
| |