Bonjour,

pour la lecture d'un fichier csv, je bufferise le contenu du fichier avant de l'analyser. Le principal problème de mon code est que je me retrouve avec un paquet de caractères qui ne devraient pas être là.

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
	if (ouvertureFichier())
	{
		char* buffer;
		int taille;
		k=0;
 
		// récupérer la taille du fichier :
		fichier.seekg (0, std::ios::end);	// Envoi du curseur à la fin du fichier
		taille = fichier.tellg();			// Lecture de la position du curseur
		fichier.seekg (0, std::ios::beg);	// Renvoi du curseur au début du fichier
 
		// allocation de la mémoire nécessaire :
		buffer = new char[taille];
 
		// lire les données comme un bloc :
		fichier.read (buffer, taille);
 
		fermetureFichier();
 
		std::ofstream tempFile;
		tempFile.open("C:/temp/test.txt"); // Pour récupérer le contenu du buffer dans un fichier (debug)
		if (tempFile.is_open())
		{
			tempFile.write(buffer, taille);
			tempFile.close();
		}
			/*
			... Traitement du buffer ...
			*/
Le problème, c'est que si le fichier que je lis fait x lignes, je vais me retrouver avec x fois la valeur 'xCD' à la fin de mon buffer.

La valeur de 'taille' est pourtant bonne, je ne comprends donc pas.