Question

Comment puis-je convertir une chaîne de char * en entier long (64 bits)?

J'utilise les compilateurs MSVC et GCC et mes plates-formes sont Windows, Linux et Mac OS.

Merci.

Était-ce utile?

La solution

Utilisation strtoull pour non signé longtemps ou strtoll pour signé longtemps. Sur n'importe quel Unix (Linux, Mac OS X), tapez man strtoull ou man strtoll pour obtenir sa description. Étant donné que les deux font partie de la norme C99, ils devraient être disponibles sur tout système qui prend en charge C. les pages Linux Man avoir des exemples sur la façon de les utiliser.

Autres conseils

Pour C ++ avec un compilateur qui prend en charge long long int, J'utiliserais un std::istringstream objet. Par exemple:

char* number_string;
//...code that initializes number_string

std::istringstream input_stream(number_string);
long long int i64_bit_type;
input_stream >> i64_bit_type;
long long int i;

if(sscanf(string, "%lld", &i) == 1) { ... }

boost::lexical_cast est probablement le plus simple (en code). Voir http://www.boost.org/doc/libs/1_47_0/libs/conversion/lexical_cast.htm pour plus d'informations. Utilisez alternativement un stringstream Pour analyser la valeur numérique.

 #include <stdlib.h>

 char serial[1000];

 long long var = _atoi64(serial);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top