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à.
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.
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 ... */
La valeur de 'taille' est pourtant bonne, je ne comprends donc pas.
Partager