Bonjour,
Je suis d'un niveau on ne peut plus debutant en C++, et je cherche a transformer une string en un tableau de double. Dans cette string, mes valeurs sont separees par des virgules, je procede donc d'abord a un decoupage de la chaine en passant par istringstream, puis je converti chaque valeur en double grace a Boost::lexical_cast (j'ai vu dans la FAQ et dans les tutos qu'il faisait ca tres bien...)
A l'affichage de DATALINE (ma chaine), j'obtiens bien ce qui a ete rentre dedans, c'est a dire : "01/10/1977,128578.08,16201.08,23893.8,128578.08,0"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 istringstream DATA(DATALINE); // DATALINE est la chaine dont je veux extraire mes valeurs J=0; while(getline(DATA, STRINGS, ',')) { if(J!=0) // Ca, c'est parce que je ne veux pas de la premiere valeur qui est une date... { cout << DATALINE << endl; // Ca, c'est pour afficher ma chaine pour verifier son contenu pendant le debuggage TABLE[J] = boost::lexical_cast<double>(STRINGS); cout << TABLE[J] << endl;// Ca, c'est pour afficher les valeurs extraites pour les verifier. system("PAUSE"); } J++; }
Par contre, a l'affichage des doubles qui sont extraits, j'obtiens des valeurs arrondies :
128578
16201.1
23893.8
128578
0
De plus, les arrondis semblent incoherents entre eux (128578.08 est arrondi a 128578 alors que 16201.08 est arrondi a 16201.1), donc je ne comprend vraiment pas d'ou ca vient...
Edit : J'ai oublie de preciser : je travaille avec Visual Studio 2005 (sous Windows XP).
Si quelqu'un a une explication, voire une solution, je suis preneur.
Merci
PS : Je precise que je me trouve en ce moment a un decalage horaire de 10 heures de la France, donc je risque fort de ne pas repondre dans la journee... celle-ci etant la nuit pour moi ^^, (je precise a l'avance, on ne sait jamais... )
Partager