Controlla se la stringa è vuota in C++
-
Usa il metodo integrato
empty()
per verificare se la stringa è vuota in C++ -
Usa la funzione definita personalizzata con
size
per verificare se la stringa è vuota in C++ -
Usa la funzione
strlen()
per verificare se la stringa è vuota in C++
Questo articolo introdurrà più metodi su come verificare la presenza di una stringa vuota in C++.
Usa il metodo integrato empty()
per verificare se la stringa è vuota in C++
La classe std::string
ha un metodo incorporato empty()
per controllare se la stringa data è vuota o meno. Questo metodo è di tipo bool
e restituisce true
quando l’oggetto non contiene caratteri. Il metodo empty()
non accetta alcun argomento e implementa una funzione di complessità temporale costante.
Nota che anche se la stringa
è inizializzata con una stringa letterale vuota - ""
, la funzione restituisce comunque il valore true
. Pertanto, la funzione empty()
controlla la dimensione della stringa e essenzialmente restituisce la valutazione dell’espressione - string.size() == 0
.
#include <cstring>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
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;
}
Produzione:
string value: This is a non-empty string
[ERROR] string is empty!
Usa la funzione definita personalizzata con size
per verificare se la stringa è vuota in C++
Il metodo precedente potrebbe essere implementato dalla funzione definita dall’utente che accetta un singolo argomento stringa
e controlla se è vuoto. Questa funzione rispecchierebbe il comportamento del metodo empty
e restituirebbe un valore bool
. L’esempio seguente mostra lo stesso esempio di codice con la funzione definita dall’utente checkEmptyString
. Si noti che la funzione contiene solo un’istruzione poiché il tipo di ritorno dell’espressione di confronto sarebbe booleano, e possiamo passarlo direttamente alla parola chiave return
.
#include <cstring>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
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;
}
Produzione:
string value: This is a non-empty string
[ERROR] string is empty!
Usa la funzione strlen()
per verificare se la stringa è vuota in C++
La funzione strlen()
fa parte della libreria di stringhe C e può essere utilizzata per recuperare la dimensione della stringa in byte. Questo metodo potrebbe essere più flessibile sia per le stringhe di tipo string
che per char*
che possono apparire nella base del codice. strlen()
accetta l’argomento const char*
e calcola la lunghezza escludendo il carattere di terminazione \0
.
Notare che la struttura del programma è simile ai metodi precedenti, poiché definiamo una funzione booleana separata e dichiariamo l’unico parametro che accetta come const char*
.
#include <cstring>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
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;
}
Produzione:
string value: This is a non-empty string
[ERROR] string is empty!
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook