Prüfen, ob String leer ist in C++

  1. Verwenden Sie die eingebaute Methode empty(), um zu prüfen, ob eine Zeichenkette in C++ leer ist
  2. Benutzerdefinierte Funktion mit size verwenden, um zu prüfen, ob String leer ist in C++
  3. Verwenden der Funktion strlen() zur Prüfung, ob eine Zeichenkette leer ist, in C++

Dieser Artikel stellt mehrere Methoden vor, wie man in C++ auf eine leere Zeichenkette prüfen kann.

Verwenden Sie die eingebaute Methode empty(), um zu prüfen, ob eine Zeichenkette in C++ leer ist

Die Klasse std::string hat eine eingebaute Methode empty(), um zu prüfen, ob die angegebene Zeichenkette leer ist oder nicht. Diese Methode ist vom Typ bool und gibt true zurück, wenn das Objekt keine Zeichen enthält. Die Methode empty() nimmt kein Argument entgegen und implementiert eine Funktion mit konstanter Zeitkomplexität.

Beachten Sie, dass die Funktion auch dann den Wert true zurückgibt, wenn der String mit einem leeren String-Literal - "" - initialisiert wird. Die Funktion empty prüft also die Größe der Zeichenkette und gibt im Wesentlichen die Auswertung des Ausdrucks zurück - string.size() == 0.

#include <iostream>
#include <string>
#include <cstring>

using std::cout; using std::endl;
using std::cin; using std::string;

int main() {
    string string1("This is a non-empty string");
    string string2;

    string1.empty() ?
        cout << "[ERROR] string is empty!" << endl :
        cout << "string value: " << string1 << endl;

    string2.empty() ?
        cout << "[ERROR] string is empty!" << endl :
        cout << "string value: " << string1 << endl;

    return EXIT_SUCCESS;
}

Ausgabe:

string value: This is a non-empty string
[ERROR] string is empty!

Benutzerdefinierte Funktion mit size verwenden, um zu prüfen, ob String leer ist in C++

Die vorherige Methode könnte durch eine benutzerdefinierte Funktion implementiert werden, die ein einzelnes Argument string annimmt und prüft, ob es leer ist. Diese Funktion würde das Verhalten der Methode empty widerspiegeln und einen bool-Wert zurückgeben. Das folgende Beispiel demonstriert das gleiche Codebeispiel mit der benutzerdefinierten Funktion checkEmptyString. Beachten Sie, dass die Funktion nur eine Anweisung enthält, da der Rückgabetyp des Vergleichsausdrucks “boolean” wäre, und wir diesen direkt an das Schlüsselwort return übergeben können.

#include <iostream>
#include <string>
#include <cstring>

using std::cout; using std::endl;
using std::cin; using std::string;

bool checkEmptyString(const string &s)
{
    return s.size() == 0;
}

int main() {
    string string1("This is a non-empty string");
    string string2;

    checkEmptyString(string1) ?
        cout << "[ERROR] string is empty!" << endl :
        cout << "string value: " << string1 << endl;

    checkEmptyString(string2) ?
        cout << "[ERROR] string is empty!" << endl :
        cout << "string value: " << string1 << endl;

    return EXIT_SUCCESS;
}

Ausgabe:

string value: This is a non-empty string
[ERROR] string is empty!

Verwenden der Funktion strlen() zur Prüfung, ob eine Zeichenkette leer ist, in C++

Die Funktion strlen() ist Teil der C-String-Bibliothek und kann verwendet werden, um die Größe des Strings in Bytes zu ermitteln. Diese Methode kann sowohl für Strings vom Typ string als auch für Strings vom Typ char*, die in der Codebasis vorkommen können, flexibler sein. strlen nimmt das Argument const char* und berechnet die Länge ohne das abschließende Zeichen \0.

Beachten Sie, dass die Struktur des Programms ähnlich wie bei den vorherigen Methoden ist, da wir eine separate boolesche Funktion definieren und den einzigen Parameter, den sie annimmt, als const char* deklarieren.

#include <iostream>
#include <string>
#include <cstring>

using std::cout; using std::endl;
using std::cin; using std::string;

bool checkEmptyString(const char *s)
{
    return strlen(s) == 0;
}

int main() {
    string string1("This is a non-empty string");
    string string2;

    checkEmptyString(string1.data()) ?
        cout << "[ERROR] string is empty!" << endl :
        cout << "string value: " << string1 << endl;

    checkEmptyString(string2.data()) ?
        cout << "[ERROR] string is empty!" << endl :
        cout << "string value: " << string1 << endl;

    return EXIT_SUCCESS;
}

Ausgabe:

string value: This is a non-empty string
[ERROR] string is empty!

Verwandter Artikel - C++ String

  • Wie man Zeichenketten mit einem Trennzeichen in C++ parst