Transformer un int/double... en chaine de caractères de type string en cpp [gcc]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 284 fois - Téléchargée 32 fois

Contenu du snippet

Voici une petite astuce utilisant les flux pour transformer tout type de données en chaine de caractères en C++ (classe string de la STL) sans utiliser les fonctions du langage C (itoa, etc.).

Pour cela, les données à mettre dans la chaine sont placées dans un flux temporaire de type stringstream.

Voici un exemple trivial pour illustrer le fonctionnement avec un double :

Source / Exemple :


// Flux d'entrée/sortie standards (juste pour le cout)
#include <iostream>
// Flux de chaine de caractères pour les flux stringstream
#include <sstream>

using namespace std;

int main()
{
  string s;
  stringstream sstr;
  double pi=3.14159;

  // on met le double dans le flux sstr
  sstr << pi;
  // on écrit dans la chaine s
  sstr >> s;

  // on affiche la chaine contenant le double
  cout << s;

  return 0;
}

Conclusion :


Une fois dans une chaine string, vous pouvez facilement manipuler vos données avec la classe string de la STL.

Compilé avec gcc 3.2

A voir également

Ajouter un commentaire

Commentaires

hsaturn
Messages postés
14
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
3 juin 2007
-
Ooops désolé pour la réponse tardive...

Le inline c'est juste histoire d'optimiser. En fait, le compilateur reprend à chaque fois le code et le copie colle à l'endroit de l'appel de la fonction.

On peut oublier et supprimer le inline. Le code fonctionnera de la même manière, surtout si on appele peu cette fonction. D'ailleurs, le inline permet d'aller un peu plus vite, mais cela a un coût : le code est plus gros...

Pour info, ce code est tiré d'une classe CString que j'ai créée pour mes propres besoins. Si ça interresse qqu'un d'avoir CString, yakademander.

Ouala !
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
c'est posté en anglais, mais on avait bien compris que tu parlais français ;)
Cethywolf
Messages postés
21
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
23 juillet 2006
-
Par contre, j'aimerais que explique le header de ton template, particulièrement "inline".
Merci.
Cethywolf
Messages postés
21
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
23 juillet 2006
-
Très simpa et pratique ce code, merci !

Encore mieux le template ^^
hsaturn
Messages postés
14
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
3 juin 2007
-
Ooops, désolé pour le post précédent... rédigé en langue de Shakespeare. Je me suis trompé de bonhomme. Molière s'est-il retourné dans sa tombe ?
Je traduis si qqun ne comprend pas.
Oualou !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.