Probleme atof() : disparition du "point"

Résolu
moizdav Messages postés 2 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 8 mars 2010 - 6 mars 2010 à 14:53
moizdav Messages postés 2 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 8 mars 2010 - 7 mars 2010 à 13:53
Bonjour a tous, j'ai un petit problème auquel je n'arrive pas a trouver de solution... Pourtant j'ai cherché...

j'ai un fichier texte dont les lignes sont de ce type:
|41.8|48.7|1|12.8 etc...
je veux récupérer les flotants entre les "|"

j'ouvre mon fichier avec ifstream
j'arrive en utilisant les fonction find et substr a séparer les flottants des "|".

Le probleme est que, par exemple si j'ai stocké dans la string s la valeur 12.48


" cout<<s.c_str()<<endl; " me donne bien 12.48
MAIS " cout<<atof(s.c_str())<<endl; " me donne 12 ????????

j'ai vérifié dans un petit programme test que cout permet bien d'afficher un flotant avec les decimales... c'est OK.

Je ne vois donc pas ce qui cloche... le "." a plusieurs "visages" dans un chaine de caractère??

Merci de votre aide!

2 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
6 mars 2010 à 18:49
Bienvenue,

En france, le séparateur de décimal est la virgule ",", pas le point "."... C'est horrible, mais c'est comme ça.

SetLocale devrait corriger le tir. Documentée ici.
3
moizdav Messages postés 2 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 8 mars 2010
7 mars 2010 à 13:53
Super !! cette fonction a bien résolu mon probleme...
Merci beaucoup rt15!
0