Einfach gesagt, wenn die Eingabe immer im selben Fall ist (hier in Kleinbuchstaben), und wenn die Zeichen immer ASCII sind, kann man string :: compare verwenden, um die alphabetische Reihenfolge von zwei Strings zuverlässig zu bestimmen?
Also, mit stringA.compare(stringB)
, wenn das Ergebnis 0 ist, sind sie gleich, wenn es negativ ist, kommt stringA alphabetisch vor stringB, und wenn es positiv ist, kommt stringA nach?
Laut den Dokumenten von cplusplus.com
Die Elementfunktion gibt 0 zurück, wenn alle die Charaktere im Vergleich Inhalte vergleichen gleich, ein Negativ Wert, wenn das erste Zeichen das tut Nicht Übereinstimmung entspricht weniger in der Objekt als in der Vergleichszeichenkette, und ein positiver Wert im Gegenteil Fall.
So wird es Strings in ASCII-Reihenfolge sortieren, die alphabetisch für englische Strings (ohne diakritische Zeichen oder andere erweiterte Zeichen) desselben Falls sein wird.
Ja, solange alle Zeichen in beiden Zeichenfolgen den gleichen Fall haben und solange beide Zeichenfolgen nur aus Buchstaben bestehen, funktioniert dies.
compare
ist jedoch eine Memberfunktion, also würden Sie es so nennen:
In% C ++ ist string
die Instanziierung der Vorlagenklasse basic_string
mit den Standardparametern: basic_string<char, char_traits<char>, allocator<char> >
. Die Vergleichsfunktion in der Vorlage basic_string
verwendet die Funktion char_traits<TChar>::compare
, um den Ergebniswert zu bestimmen.
Für std::string
ist die Reihenfolge diejenige des Standard-Zeichencodes für die Implementierung (Compiler) und dies ist normalerweise die ASCII-Reihenfolge. Wenn Sie eine andere Reihenfolge benötigen (beispielsweise möchten Sie {a, a, à, ä) als äquivalent ansehen), können Sie basic_string
mit Ihrer eigenen char_traits<>
-Implementierung instanziieren. Bereitstellung eines anderen compare
-Funktionszeigers.
ja ,
Die Elementfunktion gibt 0 zurück, wenn alle die Charaktere im Vergleich Inhalte vergleichen gleich, ein Negativ Wert, wenn das erste Zeichen das tut Nicht Übereinstimmung entspricht weniger in der Objekt als in der Vergleichszeichenkette, und ein positiver Wert im Gegenteil Fall.
Bei String-Objekten ist das Ergebnis von a Zeichenvergleich hängt nur davon ab sein Zeichencode (d. h. sein ASCII code ), so dass das Ergebnis begrenzt ist alphabetische oder numerische Reihenfolge Bedeutung.
Die Spezifikationen für die C- und C ++ - Sprachgarantie für die lexikalische Reihenfolge, 'A' & lt; "B" & lt; "C" ... & lt; "Z". Das gleiche gilt für Kleinbuchstaben.
Die Reihenfolge der Textstellen ist ebenfalls garantiert: '0' & lt; ... & lt; "9".
Wenn Sie mit mehreren Sprachen arbeiten, erstellen viele Personen ein Array von Zeichen. Das Array wird nach dem Zeichen durchsucht. Anstatt Zeichen zu vergleichen, werden die Indizes verglichen.