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...)

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++;
		}
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"
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... )