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:

Überprüfen Sie, ob zwei Werte ungleich sind:

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.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: