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

Publicado por Ricardo Rodrigues Lucca em 05/03/2010

[ Hits: 6.529 ]

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

Estatística Linux / Registrando um usuario Linux

Evitando a criação dos arquivos CORE

Documentação

Ativando o NumLock na inicialização do Linux

VIM executando programas

Leitura recomendada

Compilando/Instalando o novo Cairo-Dock no Sabayon

Lista de livros C++

system("pause") para Linux

Autoestudo e certificação C/C++

Corrigindo o bug "file format not recognized" após atualizar glib2

  

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