Traitement de Fichiers textes en C/C++

Signaler
Messages postés
14
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
12 février 2010
-
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
-
Bonjour,

Je dois réaliser une "moulinette" en C/C++ permettant de modifier l'affichage de résultats en format texte ( contexte: Visual Studio 2003).Ces fichiers se presentent sous la forme suivante:
Continuite_In
-------------
0 2 Continuite_in1 DGIN_31 -0.001mA -344.969mV -442.224mV -199.939mV
Pass
0 3 Continuite_in1 DGIN_30 -0.001mA -694.289mV -438.907mV -199.939mV Pass
0 56 Continuite_in_AN_00 AN_00_V 500.0mV 450.0uA 500.5uA 550.0uA Pass
0 57 Continuite_in_AN_01 AN_01_V 500.0mV 450.0uA 501.4uA 550.0uA Pass
Continuite_Out
--------------
0 76 Continuite_out1 DGO_31 -0.001mA -694.135mV -412.598mV -199.939mV Pass
0 77 Continuite_out1 DGO_30 -0.001mA -765.246mV -410.677mV -199.939mV Pass
Aprés traitement, ce fichier doit avoir la forme suivante:
Continuite_in1 DGIN_31 442.224mV True
Continuite_in1 DGIN_30 -438.907mV True
Continuite_in_AN_00 AN_00_V 500.5uA True

Mon problème réside dans l'utilisation de la bibliothèque "String", notamment des fonctions Get/Getline/replace afin de sélectionner les lignes et les colonnes voulues ( à savoir les colonnes 3/4/7 et 9)et de mofifier les Pass en True et les Fail en False. Voici mon code de lecture/ecriture ( création dans un nouveau fichier)

#include
#include<string>
#include <fstream>
using namespace std;

int main () {

char * buffer;
long size;

ifstream inputfile ("textfile.txt",ifstream::binary);
ofstream outputfile ("new.txt",ofstream::binary);

inputfile.seekg(0,ifstream::end);
size=infile.tellg();
infile.seekg(0);
buffer = new char [size];

inputfile.read (buffer,size);
outputfile.write (buffer,size);

delete[] buffer;
outfile.close();
infile.close();
return 0;

}

Je ne sais pas comment intégrer ces fonctions dans ce contexte (sans doute que mon approche n'est pas bonne).Est-ce que quelqu'un pourrait m'aider?

Merci, par avance.

5 réponses

Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015

pourquoi n'utilises tu pas la fonction getline de inputfile ?
Ensuite tu peux écrire une fonction split qui découpe tes lignes en se servant du caractère ' ' comme séparateur, et enfin tu recrées une ligne qui correspond à celle que tu voudrais à partir des mots récupérés. Ca ne devrait pas être trop dur ^^
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Salut,

Je suis du même avis (boucler sur chaque ligne, l'analyser, et en retourner la ligne à mettre dans le nouveau fichier).
Une précision cependant, dans ton programme tu n'utilises pas String comme tu l'as ennoncé, mais string (STL).


Cordialement, uaip.
Messages postés
14
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
12 février 2010

Salut,

oui tu as raison, en fait je voulais utiliser la librairie string pour le getline ; du coup avec la fonction split je n'aurai pas besoin d'utiliser STL Algo, n'est-ce pas?

Merci,
Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015

Je sais pas, peut etre meme que STL Algo a déjà une fonction split de faite, si c'est le cas, utilise celle là ^^
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Je crois qu'avec le scanf du C, si tu mets le masque %s, tu ne récupères qu'un mot, ou au pire, une minuscule boucle qui boucle sur la chaine jusqu'aux espaces et place les mots dans un tableau, c'est sans doute plus simple et rapide, non ?


Cordialement, uaip.