Heim >Backend-Entwicklung >C++ >C++-Programm zum Vergleich der lexikografischen Reihenfolge zweier Zeichenfolgen
Wörterbuchzeichenfolgenvergleich bedeutet, dass Zeichenfolgen in Wörterbuchreihenfolge verglichen werden. Wenn beispielsweise zwei Zeichenfolgen „apple“ und „appeal“ vorhanden sind, steht die erste Zeichenfolge an letzter Stelle, da die ersten drei Zeichen von „app“ identisch sind. Dann ist das Zeichen für die erste Zeichenfolge „l“ und in der zweiten Zeichenfolge ist das vierte Zeichen „e“. Da „e“ kürzer als „l“ ist, steht es an erster Stelle, wenn wir lexikografisch sortieren.
Zeichenfolgen werden vor dem Anordnen lexikografisch verglichen. In diesem Artikel werden wir sehen Verschiedene Techniken zum lexikografischen Vergleich zweier Zeichenfolgen mit C++.
Das C++-String-Objekt verfügt über eine Funktion „compare()“, die einen anderen String als Eingabe akzeptiert und vergleicht.
Vergleicht die aktuelle Zeichenfolge mit der zweiten Zeichenfolge. Diese Funktion gibt 0 zurück, wenn zwei Zeichenfolgen gleich sind Wenn die Zeichenfolgen gleich sind, wird eine negative Zahl (-1) zurückgegeben, wenn die erste Zeichenfolge größer ist Wenn die erste Zeichenfolge kleiner ist, übersetzen Sie sie ins Chinesische:Wenn die erste Zeichenfolge kleiner ist, handelt es sich um eine positive Zahl (+1).
<first string>.compare( <second string> )
Werfen wir einen Blick auf den Algorithmus und die entsprechende Implementierung in C++.
#include <iostream> using namespace std; string solve( string s, string t ){ int ret; ret = s.compare( t ); if( ret == 0 ) { return s + " and " + t + " are the same"; } else if( ret > 0 ) { return s + " is larger than " + t; } else { return s + " is smaller than " + t; } } int main(){ string s = "apple"; string t = "appeal"; cout << "The result of comparison: " << solve( s, t ) << endl; s = "popular"; t = "popular"; cout << "The result of comparison: " << solve( s, t ) << endl; s = "Hello"; t = "hello"; cout << "The result of comparison: " << solve( s, t ) << endl; }
The result of comparison: apple is larger than appeal The result of comparison: popular and popular are the same The result of comparison: Hello is smaller than hello
In C++ können wir auch traditionelle C-Funktionen verwenden. C verwendet Zeichenarrays anstelle von Zeichenfolgentypen.
Um zwei Zeichenfolgen zu vergleichen, werden die Funktionen strcmp() verwendet Nehmen Sie einen String als Parameter. Gibt 0 zurück, wenn sie gleich sind. Gibt einen positiven Wert zurück, wenn die erste Zeichenfolge kleiner als die zweite Zeichenfolge ist Wenn der zweite Wert größer ist, ist er der größere und negative Wert.strcmp( <first string>, <second string> )
#include <iostream> #include <cstring> using namespace std; string solve( const char* s, const char* t ){ int ret; ret = strcmp( s, t ); if( ret == 0 ) { return string(s) + " and " + string(t) + " are the same"; } else if( ret > 0 ) { return string(s) + " is larger than " + string(t); } else { return string(s) + " is smaller than " + string(t); } } int main(){ string s = "apple"; string t = "appeal"; cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl; s = "popular"; t = "popular"; cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl; s = "Hello"; t = "hello"; cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl; }
The result of comparison: apple is larger than appeal The result of comparison: popular and popular are the same The result of comparison: Hello is smaller than hello
Wie numerische Daten können auch Zeichenfolgen mithilfe von Vergleichsoperatoren verglichen werden. wenn-sonst Bedingungen können direkt für Strings in C++ verwendet werden.
strcmp( <first string>, <second string> )
#include <iostream> using namespace std; string solve( string s, string t ){ int ret; if( s == t ) { return s + " and " + t + " are the same"; } else if( s > t ) { return s + " is larger than " + t; } else { return s + " is smaller than " + t; } } int main(){ string s = "apple"; string t = "appeal"; cout << "The result of comparison: " << solve( s, t ) << endl; s = "popular"; t = "popular"; cout << "The result of comparison: " << solve( s, t ) << endl; s = "Hello"; t = "hello"; cout << "The result of comparison: " << solve( s, t ) << endl; }
The result of comparison: apple is larger than appeal The result of comparison: popular and popular are the same The result of comparison: Hello is smaller than hello
Der String-Vergleich ist eine wichtige Aufgabe, die wir in mehreren Anwendungen durchführen. In C++, Es gibt verschiedene Möglichkeiten, Zeichenfolgen zu vergleichen. Die erste besteht darin, die Methode „compare()“ zu verwenden Der Inhalt, der übersetzt werden muss, ist: Der einen String als Eingabe nimmt und den Vergleich mit dem aktuellen String prüft Für den String-Vergleich können Operatoren wie (==), (>), (=) verwendet werden. auf der anderen Seite, C-ähnliche Strings können mit der Funktion strcmp() verglichen werden. Diese Funktion akzeptiert Konstanten Zeichenzeiger. Die Methode „compare()“ und die Methode „strcmp()“ geben 0 zurück, wenn beide Wenn die erste Zeichenfolge größer ist, wird eine positive Zahl zurückgegeben; wenn die beiden Zeichenfolgen gleich sind, wird 0 zurückgegeben. Der erste Wert ist kleiner und gibt eine positive Zahl zurück.
Das obige ist der detaillierte Inhalt vonC++-Programm zum Vergleich der lexikografischen Reihenfolge zweier Zeichenfolgen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!