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 : Sélectionner tout - Visualiser dans une fenêtre à part
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(...)
Partager