bonjour,
je cherche comment faire une conversion d'un entier en une chaîne de caractères ou alors comment affecter un entier à une chaîne par exemple :
int numero;
char* chaine; comment affecter "numero" à "chaine"??
merci.
# Google n'est pas ton ami ?
Posté par Colargol . Évalué à 3.
Tu peux faire : sprintf(chaine,"%d",numero);
à condition bien sûr que tu aies alloué pour la chaîne un nombre de caractères suffisant pour tous les chiffres de ton entier.
Tu peux en outre contrôler le format (cadrage à gauche, compléter par des zéros...) : man sprintf
[^] # Re: Google n'est pas ton ami ?
Posté par Manuel Menal . Évalué à 4.
Je te laisse trouver comment calculer le nombre de chiffres d'un entier :-) (indice : log).
Si la portabilité n'est pas un problème, utiliser asprintf() permet de ne pas se casser la tête avec l'allocation mémoire. Mais c'est une extension GNU, donc seulement glibc.
[^] # Re: Google n'est pas ton ami ?
Posté par gc (site web personnel) . Évalué à 1.
char* strdup_(char* input)
{
char* ret = strdup(input);
if (ret == NULL) {
fprintf(stderr, "Out of memory, exiting - input was %s.\n", input);
exit(EXIT_FAILURE);
}
return ret;
}
char * vasprintf_(const char *msg, va_list args)
{
char s[8192];
vsnprintf(s, sizeof(s), msg, args);
return strdup(s);
}
// _GNU_SOURCE's asprintf like, but
// - doesn't need _GNU_SOURCE
// - returns allocated string
// - never returns NULL (prints failure and exit on out of memory)
char * asprintf_(const char *msg, ...)
{
char * results;
va_list arg_ptr;
va_start(arg_ptr, msg);
results = vasprintf_(msg, arg_ptr);
va_end(arg_ptr);
return results;
}
[^] # Re: Google n'est pas ton ami ?
Posté par Manuel Menal . Évalué à 2.
Par ailleurs, je suis pas persuadé que retourner la chaîne plutôt qu'un int soit une bonne chose ; il est intéressant d'avoir la taille allouée en retour... (Et puis, pour quelqu'un qui est habitué à coder du GNU, c'est une abomination d'avoir autre chose qu'un int retourné, de toutes façons :-P).
http://www.gnu.org/software/gnulib/ fournit une version portable de asprintf() ainsi que de pas mal d'autres fonctions GNU, notamment les très pratiques error(), getline() et getdelim(). La bibliothèque fonctionne pour Windows, HP-UX, AIX, *BSD, Solaris et bien d'autres.
[^] # Re: Google n'est pas ton ami ?
Posté par gc (site web personnel) . Évalué à 1.
c'est certes une implémentation qui me convient, tu peux te faire un peu plus chevrer et être plus dynamique mais concrètement comme ça, ça me va très bien.
Par ailleurs, je suis pas persuadé que retourner la chaîne plutôt qu'un int soit une bonne chose ; il est intéressant d'avoir la taille allouée en retour... (Et puis, pour quelqu'un qui est habitué à coder du GNU, c'est une abomination d'avoir autre chose qu'un int retourné, de toutes façons :-P).
c'est dommage, le fonctionnel saibien(tm).
# en C++, char* n'existe pas
Posté par Zenitram (site web personnel) . Évalué à 3.
Hum.
En C++, char* n'existe pas.
A supprimer de ta mémoire, de même de sprintf ou snprintf, vestige du C. Prendre un bouquin sur le C++ (par exemple ceux-la http://c.developpez.com/cours/#cours-cpp , gratuits) et apprendre les bases.
Pour répondre à la question :
http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/#(...)
http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/#(...)
#include < sstream >
std::ostringstream SS; //Ton gestionnaire de flux
SS << I; //I etant ton nombre
std::string TaChaineDeCharacter=SS.str(); //Pour le mettre dans un string, mieux que du char*, ou tu peux garder ton gestionnaire de flux.
# Les FAQ, c'est bien aussi
Posté par lmg HS (site web personnel) . Évalué à 2.
[^] # Re: Les FAQ, c'est bien aussi
Posté par lmg HS (site web personnel) . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.