[CPP] Conversion d'un entier vers une chaine de caractères

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [CPP] Conversion d'un entier vers une chaine de caractères

Message  Hana le Dim 01 Jan 2012, 15:45

Bonjour (et bonne année Very Happy ),

Je voudrais savoir comment fait-on pour convertir un entier (int, short) vers une chaine de caractères (char*, std::string, tableau de char) et inversement.

Merci d'avance pour vos réponses Smile



Dernière édition par Hana le Dim 01 Jan 2012, 23:35, édité 1 fois

Hana

Nombre de messages : 40
Prénom : Quynh Anh
Date d'inscription : 29/03/2011

Revenir en haut Aller en bas

resolu Re: [CPP] Conversion d'un entier vers une chaine de caractères

Message  M. Pixel le Dim 01 Jan 2012, 16:33

En C, il existe sprintf(), qui est identique à printf(), sauf que tu écris vers une chaîne au lieu de la sortie standard (headers: <stdio.h>/<cstdio> et <stdlib.h>/<cstdlib>):
Code:
int val = 123;
char * chaine = (char *)malloc(4); // Attention à la taille
sprintf(chaine, "%d", val);
printf("La chaîne: %s\n", chaine);
free(chaine);

En C++, passe par un stringstream (headers <iostream>, <sstream> et <string>):
Code:
int val = 123;
ostringstream strm_chaine;
strm_chaine << val;
// ostringstream.str() renvoit la chaine de type std::string
cout << strm_chaine.str() << endl;

Et finalement, d'une chaîne vers un entier (C++, mêmes headers):
Code:
int val;
string chaine = "123x45";
istringstream strm_chaine(chaine);
strm_chaine >> val;
cout << val << endl; // affichera 123

Il existe égalements des fonctions itoa(), atoi(), ('a' pour 'ascii' et 'i' pour 'int') et leurs versions dérivées pour des types différents, mais à ma connaissance, ces fonctions ne sont pas standards.

M. Pixel

Nombre de messages : 19
Prénom : Etienne
Localisation : 0x7C00
Date d'inscription : 15/12/2010

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum