"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como verificar se uma string C++ representa um número inteiro?

Como verificar se uma string C++ representa um número inteiro?

Publicado em 2024-11-12
Navegar:751

How to Check If a C   String Represents an Integer?

Verificando se uma string C é um número inteiro

Em certas situações, como ao processar a entrada do usuário, pode ser necessário diferenciar entre strings que representam números inteiros e aqueles que não o fazem. Felizmente, existem várias maneiras de realizar essa tarefa em C.

Uma abordagem é aproveitar a função C strtol, que converte uma representação de string de um número inteiro em um valor inteiro. Para usar strtol, você pode escrever uma função simples que encapsula o processo de conversão:

inline bool isInteger(const std::string &s) {
  if (s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != ' '))) return false;

  char *p;
  strtol(s.c_str(), &p, 10);

  return (*p == 0);
}
  • Visão geral: A função verifica se a string s fornecida representa um número inteiro.
  • Empty Strings: Primeiro verifica se o string está vazia.
  • Símbolos iniciais: Ele também verifica caracteres não numéricos iniciais, como ' ' ou '-', e retorna falso se eles não estiverem presentes (indicando um não -integer).
  • strtol Conversion: A função utiliza a função strtol para realizar a conversão. Se strtol encontrar um caractere que não seja um dígito, ele atribui o endereço desse caractere ao ponteiro p.
  • Avaliação do resultado: Se p não estiver apontando para o final da string (representado por o caractere '\0'), significa que strtol encontrou um caractere que não é de dígito. Nesse caso, a função retorna falso, indicando que s não é um número inteiro.

Esta função fornece uma maneira confiável de determinar se uma determinada string pode ser analisada como um número inteiro. Ao incorporá-lo em seu código, você pode manipular strings que representam números inteiros e não inteiros de forma adequada.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3