Há diversas tarefas corriqueiras no C++ que “vira e mexe” acabamos nos esquecendo. Logo, é interessante sempre retornamos ao básico para treinarmos e fixarmos o conhecimento.
Esse tipo de verificação pode ser utilizado em inúmeras situações e existem mais de 3 formas de verificarmos se uma string
tem ou não somente números.
Nesse artigo vamos ver as formas mais simples e geralmente as mais utilizadas!
A forma que geralmente eu mais utilizo e recomendo é utilizando a função std::all_of
do cabeçalho: <algorithm>
em conjunto com lambda.
Costumo chamar de forma: Like a BOSS! 😃 , por ser mais moderna e mais veloz, principalmente em tempo de compilação.
O código se resume em:
#include <iostream>
#include <algorithm>
int main(){
bool number {false};
std::string s {"a123456"};
if(!s.empty() && std::all_of(s.begin(), s.end(), [](char c){
return ::isdigit(c);
})){
number = true;
}
std::cout << ( number
? "Somente números! =)"
: "Não há somente números :(") << '\n';
return 0;
}
Note que a
std::string s
possui uma letra, logo, a saída será: Não há somente números :( , mas se alterarmos e recompilarmos o resultado será outro.
Algumas acham que RegEx já é muito “apelão”, no entanto, ela é uma forma padronizada que serve para qualquer linguagem de programação e também é funcional.
O lado ruim de usar RegEx em C++, é o tempo de compilação, que aumenta significativamente. Em resumo o código seria:
#include <iostream>
#include <regex>
int main(){
const std::string s {"123456+"};
std::regex re("^[0-9]+$");
std::smatch match;
std::cout << ( std::regex_search(s, match, re) ?
"Somente números! =)" :
"Não há somente números :(") << '\n';
return 0;
}
Nesse caso a
string s
tem um caractere que não é número:+
ao final.
Algumas pessoas preferem o C++ Ortodoxo, ou seja, aquele mais antigo e o mais parecido possível com o C.
Então, esse código basicão, seria:
#include <iostream>
#include <string.h>
int main(){
const std::string s {"123456"};
bool number {true};
for (std::size_t i {}; i < s.length(); ++i) {
if( !::isdigit(s[i])){
number = false;
}
}
std::cout << ( number
? "Somente números! =)"
: "Não há somente números :(") << '\n';
return 0;
}
Melzinho na chupeta, né não?! 😛
Há 5 Cursos de C++ na promoção!!! 😎
Compartilhe esse artigo e até a próxima! \o/