Bonjour,
Dans ces lignes de code, je voudrais simplement récupérer le nombre de lignes du fichier "Spectrum_User_Defined.txt", puis ensuite récupérer les données dans une matrice qui aura pour nombre de lignes égal au nombre de lignes du fichier.
Dans le fichier, il y a deux colonnes de valeurs séparées par une tabulation
Il s'avère que l'affichage des données montre que le code ne marche pas correctement.
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 ifstream specfile; string temp; int lines=0; int i; specfile.open("Spectrum_User_Defined.txt"); //Comptage des lignes while (specfile.ignore(std::numeric_limits<int>::max(), '\n')) ++lines; SpUser=Mat_DP(0.0,lines,2); //Mat_DP est une classe appartenant // a la librairie NRC++ (Numerical Recipes in C++) permettant de // manipuler des matrices tres facilement // SpUser est defini en dehors de la classe en tant qu objet de classe Mat_DP specfile.seekg(0); //Retour au debut du fichier for (i=0;i<lines;++i) { specfile >> SpUser[i][0]; cout<<SpUser[i][0]; specfile >> SpUser[i][1]; } specfile.close();
Si je ne compte pas les lignes et que je récupére directement les donnees du fichier, il n y a pas de probleme ca marche.
Mais lorsque je fais les 2 operations de comptage de lignes et de recuperation de données, ca ne marche plus.
J ai aussi essaye de fermer le fichier et de le rouvrir afin d acceder aux donnees, ca ne marche pas.
Par contre, lorsque j'utilise un autre objet de la classe fstream pour ouvrir le meme fichier et recuperer les données, le code marche.
Mais ca ferait 2 objets de classe fstream pour 1 seul fichier, et ca ne me plait pas.
En essayant avec la methode seekg, je me suis dit que l'on retournerait au debut du fichier, et que ca marcherait, mais non.
Je fais appel a vous pour m'aider, et je vous remercie d'avance
Partager