bonjour,
je fais suite à mon post précédent

j'ai besoin de lire la première, la deuxième et la dernière ligne de mon fichier avant de relire tout. Pour la 1ere et la 2nde, pas de souci, mais par contre, j'arrive pas à me positionner sur la dernière (j'ai l'impression que je suis à la fin du fichier)

Et j'ai essayé de me replacer au début... echec!

Dernier souci, je veux vider mon buffer pour économiser ma mémoire, mais ca n'a pas l'air de fonctionner...
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
	// 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();
		//cout << "Taille du buffer : " << buff.str().size() << '\n';
 
		// plus besoin du fichier donc
		fichierInput.close();
 
		// on fait la petite feinte pour choper largeur, longueur et resolution
		//findInfo(buff);
 
		string	line;
		float x1, y1, z1, x2, y2, z2, x3, y3, z3;
 
		//lecture de la premiere ligne
		getline(buff, line);
		istringstream firstLine(line);
		firstLine >> x1 >> y1 >> z1;
		cout << "\n on a " << x1 << " " << y1 << " " << z1 << "\n";
 
		//lecture de la deuxieme ligne
		getline(buff, line);
		istringstream secondLine(line);
		secondLine >> x2 >> y2 >> z2;
		cout << "\n on a " << x2 << " " << y2 << " " << z2 << "\n"; 
 
		//positionnnement a la fin du fichier
		buff.seekg(0, ios::end);
		getline(buff, line);
		istringstream lastLine(line);
		lastLine >> x3 >> y3 >> z3;
		cout << "\n on a " << x3 << " " << y3 << " " << z3 << "\n"; 
 
		// du coup faut se replacer au debut
		buff.seekg(0, ios::beg);
 
		// cette boucle s'arrete des 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 apres le "," ???
			getline (iss, bcn, ',');
			getline (iss, bcn, ',');
			istringstream iss2( bcn );
			iss2 >> tmpb;
			cout << "\n on a enregistre " << tmpx << " " << tmpy << " " << tmpz << " " << tmpb << "\n"; 
		}
 
		// on supprime le buffer
		buff.flush();
	}