Verificar conversão de tipo em C/C++

Publicado por Ricardo Rodrigues Lucca em 05/03/2010

[ Hits: 6.557 ]

Blog: http://aventurasdeumdevop.blogspot.com.br/

 


Verificar conversão de tipo em C/C++



Pessoal,

Por muito tempo utilizei a função *atoi* no C para converter uma string em número. Me deparei recentemente com a necessidade de entender números hexadecimais nessas strings, por ventura, ao reler a página de manual do *atoi* e ler a página do *strtoul* e *strtod* me deparei exatamente com o que precisava!

Além disso, a verificação de erro é muito melhor que o *atoi*, que se desse problema ou fosse informado zero tinha que se ter o mesmo comportamento. O exemplo segue em código C++:

int
main(void) {
   char value[] = "0xDEAD";
   char *end = NULL;
   double i;
                
   i = strtod(value, &end);

   if (i == std::numeric_limits<double>::infinity()
      || i == - std::numeric_limits<double>::infinity()
      || i == std::numeric_limits<double>::quiet_NaN()) {
         std::string err("Value `");
         err += key + "' not supported";
         throw logic_error(err);
   }

   if (*end != '{TEXTO}') {
      std::string err("Value `");
      err += key + "' is not not numeric at " + end;
      throw logic_error(err);
   }

   return 0;
}

Os includes do teste são stdexcept e climits. Sem .h como é costume do C++.

[]'s

Outras dicas deste autor

Trocar os dois ultimos caracteres da linha de comando

Ativando o NumLock na inicialização do Linux

Acompanhe cotações e fundos de investimentos no Linux

ls exibindo somente diretórios

Descompilando programas

Leitura recomendada

Site de livros

Lista de IDEs para Programação em Qualquer Distro

gcc: fatal error: cannot execute 'cc1plus': execvp: [...] - Como resolver no Linux Mint 20

Lançado o FltkEmu

Compilando no Debian Wheezy 7.5

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts