Saiten werden auf zwei Hauptarten in C ++ erstellt: Verwenden eines konstanten Zeigers oder Instanzipen aus einer String -Klasse. Die Streicher wörtlich: „Ich habe Schatz entdeckt.”Kann in C ++ auf folgende Weise konstruiert werden:
char str1 [] = "Ich habe Schatz entdeckt.";
const char* str2 = "Ich habe Schatz entdeckt.";
#enthalten
String str3 = String ("Ich habe einen Schatz entdeckt.");
String str4 = String ("Ich habe einen Schatz entdeckt.");
Erstellen einer Zeichenfolge mit einem Array oder dem konstanten Zeiger sind dieselbe Möglichkeit, eine Zeichenfolge zu erstellen. STR3 und STR4 wurden hier durch Instanziierung aus der enthaltenen String -Bibliothek erstellt. Beachten Sie, dass die doppelten Zitate, die von String -Literalen in der Programmierung verwendet werden.
Die Frage ist: „Wie kann ich zwei Saiten in C vergleichen?++?Der erste Rat ist, dass keine Zeichenfolgen vergleichen, die durch ständige Zeiger erzeugt werden. Wenn Sie das tun, vergleichen Sie die Zeiger und nicht die Saitenliteral. Vergleiche also nicht Str1 und Str2 oben. Wenn Sie das tun, vergleichen Sie ihre Zeiger und nicht deren Inhalt.
Um Strings in C ++ zu vergleichen. So können STR3 und STR4 oben verglichen werden und sie werden gleich vergleichen.
In diesem Tutorial wird erklärt++. Der Vergleich von Zeichen führt zum Vergleich von Saiten, obwohl Charaktere unterschiedlich als Saiten in C behandelt werden++.
Artikelinhalt
Vergleich von Zeichen
Zeichen werden tatsächlich im Computer durch Zahlen dargestellt. Im Vergleich von Zeichen sind es also die Zahlen, die verglichen werden.
Die Reihenfolge zum Vergleich von Zeichen, die String -Literale bilden, lautet wie folgt: Ziffern kommen vor Großbuchstaben, die vor Kleinbuchstaben kommen. Andere Zeichen wie die Glocke, die Tab. Durch den Vergleich von Zeichen in C ++ werden relationale und Gleichstellungsoperatoren verwendet, nämlich:
< meaning, less thanDie String -Klasse verwendet diese Operatoren auch, um String -Literale zu vergleichen.
Notiz: Ein Zeichen ist Single und wird durch einzelne Zitate abgegrenzt.
Jede der folgenden zwei Aussagen druckt 1 für wahr:
Cout << ('5' < 'E') << endl;
Cout << ('E' < 'e') << endl;
Jedes der folgenden zwei Aussagen druckt, 1 für True:
Cout << ('E' <= 'E') << endl;
Cout << ('E' >= 'E') << endl;
Die folgende Aussage druckt 1 für wahr:
Cout << ('e' == 'e') << endl;
Die folgende Aussage druckt 1 für wahr:
Cout << ('e' != 'E') << endl;
STRING -Klassenobjekte
Nachdem die String-Bibliothek mit dem inclupt-direkten Einfügen einbezogen wird, kann ein String-Objekt auf folgende Weise in C ++ instanziiert (konstruiert) werden:
String str = "Wie kommt es? - $ 50.000!";
String Str = String ("Wie kommt es? - $ 50.000!");
String str = String ('h', 'o', 'w', ", 'c', 'o', 'm', 'e', ',', ','?",", '-', ", '$', '5', '0', ',' 0 ',' 0 ',' 0 ',' ',' '!',' \ 0 ');
Die String -Literal für diese drei Fälle sind gleich. Beachten Sie jedoch das NUL -Zeichen "\ 0" am Ende des Array -Inhalts.
Es gibt bereits sechs nicht alphabetische Zeichen in diesem String-Literal, die sind?',' $ ','-',', ',', ',', ',', ',', ',', ',', '!'und der Raum ("). Stellen Sie sich ein neues Wörterbuch vor, in dem nicht alphabetische Zeichen in Worten verwendet werden, und respektiert die oben erwähnte Ordnung (ASCII). Sie wissen bereits, wie Sie Wörter im normalen Wörterbuch vergleichen können. C ++ vergleicht String -Literale in diesem neuen Wörterbuch auf die gleiche Weise.
Denken Sie daran, die String -Literale in C ++ zu vergleichen, die String -Objekte zu vergleichen, die durch ihre Identifikatoren dargestellt werden.
Gleichstellungsoperation
Der gleiche Operator ist == . Die Syntax ist:
stra == strb
Wenn der Inhalt von Straße mit dem Inhalt des STRB übereinstimmt und das Gehäuse nicht ignoriert (ohne Kapital und kleine Buchstaben), dann ist das Ergebnis der Operation wahr.
Der nicht gleiche Bediener ist, != . Die Syntax ist:
stra != strb
Der geringste Unterschied im Inhalt zwischen Straße und STR, das Aspekt der Gehäuse (nicht ignorierter Kapital und kleine Buchstaben), führt zu FALSE, für diese Operation.
Betrachten Sie den folgenden Code:
String str1 = "$ meyna [26]";
String str2 = "$ meyna [26]";
bool bla = str1 == str2;
Cout << blA << endl;
String str3 = "$ meyna [26]";
String str4 = "$ meyna [26]";
bool blb = str3 == str4;
Cout << blB << endl;
Die Ausgabe ist:
1 // für wahr
0 // für false
Die Sequenzen sind für STR1- und STR2 -Literale gleich; Der Rückgabewert ist also wahr. Die Sequenzen sind für STR3- und STR4 -Literale gleich; Aber ein String -Literal hat einen Kleinbuchstaben und der andere im Großbuchstaben; Der Rückgabewert ist also falsch.
Das Folgende ist der obige Code wiederholt, aber mit “!= "Statt" == ".
String str1 = "$ meyna [26]";
String str2 = "$ meyna [26]";
bool bla = str1 != str2;
Cout << blA << endl;
String str3 = "$ meyna [26]";
String str4 = "$ meyna [26]";
bool blb = str3 != str4;
Cout << blB << endl;
Die Ausgabe ist:
0 // für false
1 // für wahr
Fall ignorieren im Vergleich
Ab sofort hat C ++ keine Funktion zum Vergleich von Zeichenfolgen und ignoriert den Fall. Der Weg, dies zu tun, besteht darin, beide Saiten in Großbuchstaben umzuwandeln, bevor Sie verglichen werden. Die Algorithmus -Bibliothek muss enthalten sein. Diese Bibliothek hat die Transformation () -Funktion, die Umwandlung in Großbuchstaben durchführt. Für die Aussage,
String str = "Ich liebe $ 1000 uns.";
Das Konstrukt,
Transformation (str.begin (), str.End (), str.begin (), :: toupper);
Wird den von STR dargestellten wörtlichen zu: um: zu:
"Ich liebe $ 1000 uns."
Beachten Sie, dass nicht alphabetische Zeichen wie "$", ".'Und der Raum hat sich nicht geändert (weil sie keine oberen und Kleinbuchstaben haben).
Das folgende Programm verwendet dieses Schema, um String -Literale zu vergleichen und den Fall zu ignorieren:
#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str3 = "$ meyna [26]";
Transformation (str3.begin (), str3.End (), Str3.begin (), :: toupper);
String str4 = "$ meyna [26]";
Transformation (str4.begin (), str4.End (), Str4.begin (), :: toupper);
bool blb = str3 == str4;
Cout << blB << endl;
Rückkehr 0;
Die Ausgabe ist 1 für wahr, da beide Saiten jetzt in Großbuchstaben sind, wobei jede andere Sache gleich ist.
Weniger als, größer als
stra < strB
Führt zu wahr, wenn das buchstäbliche Straße im Wörterbuch vor dem von strb erscheinen würde.
stra> strb
Führt zu wahr, wenn das buchstäbliche Stra.
Der folgende Code gibt True zurück, da "WXYZ" weniger als "WXYZ" ist:
String str1 = "wxyz";
String str2 = "wxyz";
bool BL = str1 < str2;
Cout << bl << endl;
Der Ausgang ist 1. Der folgende Code gibt True zurück, da „STUV“ weniger als „WXYZ“ ist:
String str1 = "stuv";
String str2 = "wxyz";
bool BL = str1 < str2;
Cout << bl << endl;
Die Ausgabe ist 1 für wahr. Der folgende Code gibt falsch zurück, da „WXYZ“ gleich „WXYZ“ ist und Str1 nicht weniger als Str2 ist.
String str1 = "wxyz";
String str2 = "wxyz";
bool BL = str1 < str2;
Cout << bl << endl;
Die Ausgabe ist 0. Der folgende Code gibt wahr zurück, da „WXY“ größer ist als „BCDE“:
String str1 = "wxy";
String str2 = "bcde";
bool bl = str1> str2;
Cout << bl << endl;
Der Ausgang ist 1.
Weniger als oder gleich, größer als oder gleich zu
stra <= strB
Führt zu wahr, wenn das buchstäbliche von Straße geringer ist oder zufällig gleich (gleich) ist wie das von STRB.
stra> = strb
Führt zu wahr, wenn das wörtliche von Straße größer als der von STRB ist oder zufällig gleich (gleich) ist.
Der folgende Code gibt wahr zurück, da „WXYZ“ kleiner oder gleich „WXYZ“ ist:
String str1 = "wxyz";
String str2 = "wxyz";
bool BL = str1 <= str2;
Cout << bl << endl;
Der Ausgang ist 1. Der folgende Code gibt wahr zurück, da „STUV“ kleiner oder gleich „WXYZ“ ist:
String str1 = "stuv";
String str2 = "wxyz";
bool BL = str1 <= str2;
Cout << bl << endl;
Der Ausgang ist 1. Der folgende Code gibt wahr zurück, da „WXYZ“ kleiner oder gleich „WXYZ“ ist (und Str1 nicht weniger als Str2).
String str1 = "wxyz";
String str2 = "wxyz";
bool BL = str1 <= str2;
Cout << bl << endl;
Der Ausgang ist 1. Der folgende Code gibt wahr zurück, da „WXY“ größer oder gleich „BCDE“ ist:
String str1 = "wxy";
String str2 = "bcde";
bool bl = str1> = str2;
Cout << bl << endl;
Der Ausgang ist 1.
Abschluss
Verwenden Sie die Charaktere in C ++, um die Gleichheit und die relationalen Operatoren zu verwenden. Um String -Literale zu vergleichen, verwenden Sie immer noch die Gleichheit und die relationalen Operatoren, jedoch für Objekte der String -Klasse und nicht für const char*s. Die Verwendung der Operatoren für const char*vergleicht die Zeiger und nicht die String -Literale.