bonjour!
Et oui, je sais, encore un post sur un truc basique: lire un fichier texte.
Je souhaite lire un fichier texte pouvant être assez gros (10Mo) le plus rapidemment possible. Les lignes sont de la forme
J'ai (essayé de) bien regardé tous le forum et autre sujet sur google.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 912450.25 6232401.25 28.0387096 BCN,10
J'ai compris que scanf, eof et autres... vous etiez pas trop fana. Certains ont suggéré de passer par un buffer.
La je bugg en plus sur comment choper le nombre après la virgule
Sachant que je suis pas expert en c++, j'en suis la:Voilà. Qu'est ce que vous en pensez? Existe-t-il des méthodes plus efficaces? Est-ce utile de passer par un buffer?
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
35
36
37 void mnt::load(void) { float tmpx, tmpy, tmpz; // le x y z de chaque ligne int tmpb; // le b correspondant x y z string line; // contient la ligne qu'on est en train de lire // ouverture du fichier ifstream fichierInput( "../../data/Balise.xyzb" ); // verification if (!fichierInput) cout << "\nt'es dans le caca avec ton fichier\n"; else { // on tente un truc rapide -> on met tout dans un buffer stringstream buff; buff << fichierInput.rdbuf(); // plus besoin du fichier donc fichierInput.close(); cout << "Taille du buffer : " << buff.str().size() << '\n'; // cette boucle s'arrête dès qu'une erreur de lecture survient while (getline(buff, line)) { // on enregistre ligne par ligne mais evidemment faut sauter le "BCN," istringstream iss( line ); iss >> tmpx >> tmpy >> tmpz; // comment choper que l'entier après le "," ??? iss >> tmpb; cout << "\n on a enregistre " << tmpx << " " << tmpy << " " << tmpz << " " << tmpb << "\n"; } } }
Merci d'avance! En attendant je continue de chercher...
Partager