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