Vergleich von Zeichenketten in C++: 3 Methoden im Überblick
1. Verwendung der String-Funktion strcmp() in C++
Die C++-String-Klasse verfügt über eingebaute Funktionen zur Manipulation von Zeichenketten. Die strcmp()-Funktion ist eine C-Bibliotheksfunktion, die dazu dient, zwei Zeichenketten lexikographisch zu vergleichen.
Syntax von strcmp()
Die Eingabezeichenkette muss ein char-Array vom Typ C-String sein. strcmp() vergleicht die Zeichenketten in einer groß- und kleinschreibungssensitiven Form.
int strcmp(const char *str1, const char *str2);
Diese Funktion gibt je nach Übereinstimmung folgende Werte zurück:
- Gibt 0 zurück, wenn beide Zeichenketten identisch sind.
- Gibt < 0 (kleiner als Null) zurück, wenn der Wert des ersten Zeichens der ersten Zeichenkette kleiner ist als der Wert des entsprechenden Zeichens der zweiten Zeichenkette.
- Ergibt > 0 (größer als Null), wenn die zweite Zeichenkette im Vergleich größer ist.
Beispiel 1: Verwendung von strcmp()
#include <iostream>
#include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBeide Eingabezeichenketten sind gleich." << std::endl;
else
std::cout << "\nDie Eingabezeichenketten sind nicht gleich." << std::endl;
}
Dies erzeugt die folgende Ausgabe:
String 1: String Match
String 2: String Unmatch
Die Eingabezeichenketten sind nicht gleich.
strcmp(str_inp1, str_inp2) ergibt -9. Die Werte von str_inp1 und str_inp2 sind unterschiedlich.
Beispiel 2: Verwendung von strcmp()
#include <iostream>
#include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBeide Eingabezeichenketten sind gleich." << std::endl;
else
std::cout << "\nDie Eingabezeichenketten sind nicht gleich." << std::endl;
}
Dies erzeugt die folgende Ausgabe:
String 1: String Match
String 2: String Match
Beide Eingabezeichenketten sind gleich.
strcmp(str_inp1, str_inp2) ergibt 0. Die Werte von str_inp1 und str_inp2 sind gleich.
2. Verwendung der Funktion compare() in C++
C++ verfügt über eine eingebaute compare()-Funktion zum Vergleichen von zwei Zeichenketten.
Syntax von compare()
Die compare()-Funktion vergleicht zwei Zeichenketten:
int compare (const string& string-name) const;
Diese Funktion gibt je nach Übereinstimmung folgende Werte zurück:
- Gibt 0 zurück, wenn beide Zeichenketten identisch sind.
- Gibt < 0 (kleiner als Null) zurück, wenn der Wert des ersten Zeichens der ersten Zeichenkette kleiner ist als der Wert des entsprechenden Zeichens der zweiten Zeichenkette.
- Ergibt > 0 (größer als Null), wenn die zweite Zeichenkette im Vergleich größer ist.
Beispiel 1: Verwendung von compare()
#include <iostream>
int main()
{
std::string str_inp1("String Match");
std::string str_inp2("String Match");
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
int res = str_inp1.compare(str_inp2);
if (res == 0)
std::cout << "\nBeide Eingabezeichenketten sind gleich." << std::endl;
else if (res < 0)
std::cout << "\nString 1 ist kleiner als String 2." << std::endl;
else
std::cout << "\nString 1 ist größer als String 2." << std::endl;
}
In diesem Beispiel werden str_inp1 und str_inp2 mit compare() verglichen:
String 1: String Match
String 2: String Match
Beide Eingabezeichenketten sind gleich.
Beide Zeichenketten sind lexikographisch identisch, daher gibt die Funktion 0 zurück.
Beispiel 2: Verwendung von compare()
#include <iostream>
int main()
{
std::string str_inp0("String Match");
std::string str_inp1("String Match");
std::string str_inp2("String Unmatch");
std::cout << "String 1: " << str_inp1 << std::endl;
if (str_inp1.compare(str_inp0) == 0)
std::cout << "\nDie Zeichenketten sind gleich." << std::endl;
else
std::cout << "\nDie Zeichenketten sind nicht gleich." << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (str_inp2.compare(str_inp0) == 0)
std::cout << "\nDie Zeichenketten sind gleich." << std::endl;
else
std::cout << "\nDie Zeichenketten sind nicht gleich." << std::endl;
}
In diesem Beispiel wird str_inp0 mit str_inp1 verglichen:
String 1: String Match
Die Zeichenketten sind gleich.
Dann wird str_inp0 mit str_inp2 verglichen:
String 2: String Unmatch
Die Zeichenketten sind nicht gleich.
Dieser Code vergleicht direkt eine Zeichenkette mit einer anderen Eingabezeichenkette mithilfe der compare()-Funktion.
3. Relationale Operatoren in C++
Relationale Operatoren in C++, wie == (doppelter Gleichheitszeichen) und != (ungleich), können bei der Vergleich von Zeichenketten hilfreich sein.
Syntax der relationalen Operatoren
Überprüfen Sie, ob zwei Werte gleich sind:
string1 == string2
Überprüfen Sie, ob zwei Werte ungleich sind:
string1 != string2
Beispiel 1: Verwendung des C++ == Operators
#include <iostream>
int main()
{
std::string str_inp1;
std::string str_inp2;
std::cout << "Geben Sie String 1 ein:\n";
std::cin >> str_inp1;
std::cout << "Geben Sie String 2 ein:\n";
std::cin >> str_inp2;
if (str_inp1 == str_inp2)
std::cout << "Die Zeichenketten sind gleich." << std::endl;
else
std::cout << "Die Zeichenketten sind nicht gleich." << std::endl;
}
Geben Sie Werte für „String 1“ und „String 2“ ein:
Geben Sie String 1 ein:
Centron
Geben Sie String 2 ein:
centron
Die Ausgabe lautet:
Die Zeichenketten sind nicht gleich.
Der Code vergleicht die beiden Zeichenketten mit ==.
Beispiel 2: Verwendung des C++ != Operators
#include <iostream>
int main()
{
std::string str_inp1;
std::string str_inp2;
std::cout << "Geben Sie String 1 ein:\n";
std::cin >> str_inp1;
std::cout << "Geben Sie String 2 ein:\n";
std::cin >> str_inp2;
if (str_inp1 != str_inp2)
std::cout << "Die Zeichenketten sind nicht gleich." << std::endl;
else
std::cout << "Die Zeichenketten sind gleich." << std::endl;
}
Geben Sie Werte für „String 1“ und „String 2“ ein:
Geben Sie String 1 ein:
Centron
Geben Sie String 2 ein:
Centron
Die Ausgabe lautet:
Die Zeichenketten sind gleich.
Der Code vergleicht die beiden Zeichenketten mit !=.
Fazit:
In diesem Artikel haben Sie gelernt, wie Sie Zeichenketten in C++ vergleichen können. Dies umfasste die Verwendung der strcmp()-Funktion von String, der eingebauten compare()-Funktion und der relationalen Operatoren (==, !=). Setzen Sie Ihr Lernen mit weiteren C++-Tutorials fort.