Conversion char -> double

Résolu
Signaler
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006
-
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006
-
Bonjour,



J'ai un petit souci, j'utilise la fonction atof() pour faire la
conversion d'une chaine de caractère (ex : ".00000E+00") vers un
double. Cependant, j'obtiens un résultat uniquement si je vais dans les
propriétés de windows et les options régionnales et que je change le
symbole décimal de "," en ".";



Sachant que je dévellope un soft avec DevCpp et Gtkmm, pour
pouvoir l'utiliser sous windows ET linux, je voudrait savoir si
quelqu'un a une solution.



Merci d'avance.



Obby

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Je crois qu'en C++ il y a d'autres fonction pour ca. Notamment, en C++ on utilise plutot un istringstream que atof:

const char* s = ".00000E+00";
std::istringstream iss(s);
double d = 0;
if(iss >> d) std::cout << d << std::endl;

Pour le fonction setlocale, elle marchait bien chez moi: après un setlocale(LC_ALL, "french"); la virgule s'affichait ',' et plus '.'
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Il me semble que tu peux utiliser la fonction setlocale(int, const char *) déclarée dans locale.h
Essaie de trouver des infos la dessus
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Tu codes bien en C, pas en C++?
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

non je code en C++, pourquoi?
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

Merci, setlocale() fonctionne. Reste maintenant à voir si sous linux cela va fontionner également.