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
sizepara 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