[fstream]Lecture d'un double à partir d'un fichier
Bonjour,
J'ai un fichier *.wkt contenant 1000 lignes sous cette forme : POINT(654875.345 68912.296)
J'ai essayé d'écrire une fonction qui permet de lire chaque ligne, d'extraire les deux nombres (qui représentent des coordonnées) et de les mettre dans des objets Point que j'ai mis dans un vector.
Dans la classe Point j'ai mis deux attributs de type double X et Y, en plus des getters et des setters.
Le problème est que je ne peux pas lire les deux doubles. Lorsque j'affiche ce que le programme a lu, je trouve des valeurs aléatoires.
Est-ce que quelqu'un a une idée de ce qui se passe ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| bool charger(char* nom, vector<Point> &liste, int taille){ //taille = 1000 : nombre de lignes du fichier
ifstream fin;
fin.open(nom);
//Vérifier que le fichier est ouvert sans problèmes
if(!fin){
cout<<"Probleme a l'ouverture du fichier"<<endl;
return false;
}// Fin if
// Saisie des coords dans les objets Point
double x, y;
char c;
for(int j=0; j<taille; j++){
// On saute la chaîne 'POINT('
fin.seekg(6,ios_base::cur);
// On prend le X, le Y et le caractère ')' à la fin de chaque ligne j
fin>>x>>y>>c;
cout<<x<<endl<<y<<endl<<c<<endl; //les valeurs de x et y ne sont pas les bonnes. Par contre dans c il y a ')' comme prévu
// On met le X et le Y dans le point j de la liste
liste.assign(1,Point(x,y));
cout<<liste[j].getX()<<endl<<liste[j].getY()<<endl;//ça me donne des valeurs encore différentes
}// Fin for
// Fermeture du stream
fin.close();
// Valeur retournée par la fonction
return true;
}// Fin charger(...) |