Verificar se a string está vazia em C++
-
Utilizar o Método Integrado
empty()
para verificar se a string está vazia em C++ -
Use a função definida pelo cliente com
size
para verificar se a string está vazia em C++ -
Use a função
strlen()
para verificar se a string está vazia em C++
Este artigo introduzirá múltiplos métodos sobre como verificar a existência de um string vazio em C++.
Utilizar o Método Integrado empty()
para verificar se a string está vazia em C++
A classe std::string
tem um método integrado empty()
para verificar se a string dada está vazia ou não. Este método é do tipo bool
e retorna true
quando o objecto não contém caracteres. O método empty()
não aceita qualquer argumento e implementa uma função de complexidade temporal constante.
Note-se que mesmo que a função string
seja inicializada com uma string vazia literal - ""
, a função ainda retorna o valor true
. Assim, a função empty()
verifica o tamanho da string e retorna essencialmente a avaliação da expressão - 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;
}
Resultado:
string value: This is a non-empty string
[ERROR] string is empty!
Use a função definida pelo cliente com size
para verificar se a string está vazia em C++
O método anterior poderia ser implementado através da função definida pelo utilizador, que toma um único argumento de string
e verifica se está vazio. Esta função espelharia o comportamento do método empty
e devolveria um valor bool
. O exemplo seguinte demonstra o mesmo exemplo de código com a função checkEmptyString
personalizada. Note que a função contém apenas uma declaração como o tipo de retorno da expressão de comparação seria booleano, e podemos passá-la directamente para a palavra-chave 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;
}
Resultado:
string value: This is a non-empty string
[ERROR] string is empty!
Use a função strlen()
para verificar se a string está vazia em C++
A função strlen()
faz parte da biblioteca de strings C e pode ser utilizada para recuperar o tamanho da string em bytes. Este método poderia ser mais flexível tanto para strings do tipo string
como char*
que possam surgir na base de código. O strlen
toma o argumento const char*
e calcula o comprimento excluindo o carácter terminante \0
.
Note-se que a estrutura do programa é semelhante aos métodos anteriores, pois definimos uma função booleana separada e declaramos o único parâmetro que toma como 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;
}
Resultado:
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