IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)



Existe-t-il un type plus efficace que les char* du C pour représenter des chaînes de caractère ?
auteur : LFE
Il existe le type std::string pour représenter et manipuler les chaînes de caractère.
Ce nouveau type est nettement plus sûr que les char* du C (gestion de la mémoire, opérateurs, ...)
En cas de necessité d'un char*, il existe la fonction membre string::c_str() qui renvoie le pointeur char*. Attention que ce pointeur ne doit jamais être utilisé pour modifier la chaîne.


Comment convertir une chaîne de caractères en nombre ?
auteur : Dof

#include <sstream> int StrToNum(std::istringstream str) { int i; str >> i; return i; }

Comment convertir un nombre en chaîne de caractères ?
auteur : Dof
La classe ostringstream de la bibliothèque standard est très efficace. Elle permet de changer le format de n'importe quel type de données dans n'importe quel type, avec une syntaxe proche des entrées-sorties en surchargeant en fait les opérateurs de flux de données << et >>.

#include <sstream> std::string NumToStr(integer i) { std::ostringstream ss; ss << i; return ss.str(); }

Comment déterminer si une chaîne contient une valeur correspondant à un type de donnée ?
auteur : LFE
Par exemple, pour déterminer si un string a un contenu correspondant à un flottant, on peut utiliser le petit bout de code suivant :

float f; istringstream iss("je devrais être un float"); iss >> f; if ( iss.fail() ) { iss.clear(); cerr << "Erreur" << endl; }

Comment convertir un char* en un string ?
auteur : JEG
auteur : LFE
En utilisant tout simplement un des constructeurs de la classe string :

#include <string> std::string l_string = std::string(l_buffer);
ou en assignant le char* à un instance de string

#include <string> std::string l_string; const char *test="toto"; l_string = test;

Comment convertir un string en char* ?
auteur : LFE
La méthode c_str() de la classe std::string permet d'avoir accès aux informations de la chaîne en tant que pointeur sur des caractères.
Il est à noter que le retour est un const char *. En effet, il ne faut pas utiliser ce pointeur pour modifier le contenu de la chaîne.

char cPtr[128]; std::string chaine; strcpy(cPtr, chaine.c_str()); // cPtr contient maintenant une copie des données de chaine.


Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduit en français ici.
Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.
Certaines parties de ce document sont sous copyright Marshall Cline