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

Publicado por Ricardo Rodrigues Lucca em 05/03/2010

[ Hits: 6.291 ]

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

Como configurar Gerrit e GitLab para trabalharem juntos

Evitando a criação dos arquivos CORE

Documentação

Xterm colorido

Ligando o NumLock na abertura do KDE

Leitura recomendada

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

Como escrever código portável

CodeBlocks - IDE C++ no Ubuntu 12.04

C compiler Cannot create executable?

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