Modification date

drcmomo Messages postés 182 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 25 décembre 2009 - 20 juin 2006 à 11:42
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011 - 18 août 2008 à 20:48
Bonjour!!
Je fais un traitement sur les fichiers.txt
mes fichiers contiennent des centaines de lignes.Mon problème j'aimerais bien remplacer dans toutes lignes du fichier ,le champ DateHeure(voir l'exemple ci-dessous:
1011090673;06/02/06 04:03:24;4502;SNPI;SNPI1
;DIFFERENCE PROGRAMMATION SUIVI ORIGINE 607;2b;2;Train inattendu sur origine 607 index programmé 58568 index suivi 58569;1;0;2;idem exploitation;2
PAR:
1011090673;06/02/2006 04:03:24;4502;SNPI;SNPI1;
DIFFERENCE PROGRAMMATION SUIVI ORIGINE 607;2b;2;Train inattendu sur origine 607 index programmé 58568 index suivi 58569;1;0;2;idem exploitation;2
en gros j'aimerais rajouté un 20 devant le 06 pour pour chaque ligne.
 L'idée je ne sais pas le programmer, mon idée ouvrir le fichier d'origine, lire ligne par ligne le fichier,modifier format DateHeure, ecrire les ligne dans un autre fichier apres la modification  jusqu'a la fin.
Merci d'avance

3 réponses

snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
18 août 2008 à 20:16
salut en gros,
tu ouvres avec ifstream, tu le lis ligne par ligne avec getline(sdt::ofstream , sdt::tring),
tu cherche le 06 avec un switch dans une boucle for par exemple, tu rajoutes le 20 avant
tu remets la ligne dans un string et quand le fichier est fini tu le réécris.

code :

#include <fstream>
using namespace std;

int main()
{       
         string sTexte, sNewTexte;
         ofstream Fichier;
         ifstream fStr;
         const char CcTestZero='0';
         const char CcTestSix='6';
          const char CcTestSlach='/';
         fStr.open("Fichier.txt", fstream::in);//ouverture du texte
         if(fStr)
         {
                                       
                
                        while(getline(fStr, sTexte) )//boucle sur le numbre de ligne
                        {
                                 for(int i=0;i<=sTexte.length();i++)//boucle sur le numbre de lettre dans une ligne
                                 {
                                  
                                       switch(sTexte[i])//switch sur la lettre
                                       {
                                             case CcTestZero://si la lettre est "0"
                                                   if(sTexte[i+1]==CcTestSix)//si la lettre d'après est "6"
                                                  {
                                                          if(sTexte[i+2]==CcTestSlach)//si la lettre d'après est "/"
                                                          sTexte.insert(i-1,"20");//on insert 20 aven le 0
                    }
                    break;
                                       }//fin de switch
                                    }//fin de for
                             sNewTexte+=sTexte;
                            sNewTexte+="\n";
                           }// fin de while
                           fStr.close();//on ferme le fichier du monde leture
            }//fin de if(fStr)               
            Fichier.open("Fichier.txt");//on ouvre le fichier en mode écriture
            Fichier<<sNewTexte;//on réécrit le fichier avec les modifs
            Fichier.close();/on ferme le fichier
}//fin de main()

voila à tester 
                           
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
18 août 2008 à 20:20
ou la mets 
           Fichier.open("Fichier.txt");//on ouvre le fichier en mode écriture
            Fichier<<sNewTexte;//on réécrit le fichier avec les modifs
            Fichier.close();/on ferme le fichier
            dans l'encapsulation de if(fStr)
            dsl
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
18 août 2008 à 20:48
voisi le code corrié est qui fonctionne

code :


<hr />
#include <fstream>
#include
using namespace std;int main()
{       
         string sTexte, sNewTexte;
         ofstream Fichier;
         ifstream fStr;
         const char CcTestZero='0';
         const char CcTestSix='6';
          const char CcTestSlach='/';
         fStr.open("Fichier.txt", fstream::in);//ouverture du texte
         if(fStr)
         {
                 cout<<"open ok\n";
                        while(getline(fStr, sTexte) )//boucle sur le numbre de ligne
                        {
                                
                                 for(int i=0;i<=sTexte.length();i++)//boucle sur le numbre de lettre dans une ligne
                                 {
                                         cout<<"lettre "<<sTexte[i]<<endl;
                                       switch(sTexte[i])//switch sur la lettre
                                       {
                                             case CcTestZero://si la lettre est "0"
                                                   if(sTexte[i+1]==CcTestSix)//si la lettre d'après est "6"
                                                  {
                                                          if(sTexte[i+2]==CcTestSlach)//si la lettre d'après est "/"
                                                         { sTexte.insert(i,"20");
                                                         i+=2;}//on insert 20 aven le 0
                                                  }
                                       break;
                                       }//fin de switch
                                  }//fin de for
                             sNewTexte+=sTexte;
                            sNewTexte+="\n";
                           }// fin de while
                           fStr.close();//on ferme le fichier du monde leture
           Fichier.open("Fichier.txt");//on ouvre le fichier en mode écriture
            Fichier<<sNewTexte;//on réécrit le fichier avec les modifs
            Fichier.close();//on ferme le fichier
           }//fin de if(fStr)              
           
}//fin de main()

<hr />
0
Rejoignez-nous