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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
912450.25	6232401.25	28.0387096	BCN,10
J'ai (essayé de) bien regardé tous le forum et autre sujet sur google.
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:
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"; 
		}
	}
}
Voilà. Qu'est ce que vous en pensez? Existe-t-il des méthodes plus efficaces? Est-ce utile de passer par un buffer?

Merci d'avance! En attendant je continue de chercher...