Numéroter les phrases d'un fichier texte et les réécrire dans un autre fichier

Signaler
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
bonjour,
les instructions ci dessous me permettent en principe de copier un fichier texte dans un autre fichier en numérotant ses phrases,
if (!std::getline (entree, mot))
    sortie << mot << " ";
else
   {
     sortie << mot << " " << std::endl;
     ++ num_ligne;
     sortie << num_ligne << std::endl;
}


ce code malheureusement n'affiche pas (ou ne copie pas) le premier mot de chaque phrase.
j'espère que vous pouvez m'aider à le corriger.

2 réponses

Messages postés
3802
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
9 janvier 2020
93
J'ai testé chez moi, ça fonctionne. J'ai juste remplacé le if par un while, pour prendre toutes les lignes et pas seulement la première.

#include 
#include <fstream>

int main()
{
  std::ifstream entree("in.txt");
  std::ofstream sortie("out.txt");
  std::string ligne;
  int num_ligne = 0;
  while (std::getline (entree, ligne))
  {
    ++ num_ligne;
    sortie << num_ligne << " " << ligne << std::endl;
  }

  return 0;
}



________________________________________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

merci tout d'abord, oui c'est vrai ce code est bien juste, mais apparemment j'ai une faute autrement,
en fait mon programme permet d'éliminer les mots vides ( tels que: et, de dans...) de mon texte et puis de numéroter les phrases.
j'ai comme entrée un fichier texte contenant ces mots vides et le fichier texte à régler.
voici tout le code:
#include 
#include <fstream>
#include <string>
using std::ifstream;
using std::ofstream;
using std::string;

struct Page
{
  string val;
  Page* suivant;
};

// créer une liste de mots à partir d'un fichier texte
Page* creerliste()
{
  ifstream entree ("entr.txt");
  string i;
  Page* premier;
  Page* precedent;
  Page* nouveau;

  premier = new Page;
  entree >> premier->val;
  precedent = premier;
  while (entree >> i)
  {
nouveau = new Page;
precedent->suivant = nouveau;
        precedent = nouveau;
nouveau->val = i;
  }
  precedent->suivant = 0;

  return premier;
}
//éliminer les mots qui existent dans la liste du fichier texte et mettre //le résultat dans un autre fichier texte
void compare(Page* debut)
{
  int i 0, num_ligne 0;
  ifstream ifs("in.txt") ;
  ofstream ofs("out.txt");
  string s;
  Page* head = debut;

  while (ifs >> s)
  {
debut = head;
    while (debut != 0)
{
  if (s == debut->val)
  {
i = 1;
break;
  }


      debut = debut->suivant;
}
if (i != 1)
 if( !std::getline(ifs, s))
 

   ofs << s << " ";
else
 {
++ num_ligne ;
ofs << num_ligne << " " << s << std::endl;
  }

   i = 0;

  }
}

int main()
{
  Page* premier = creerliste();
  compare(premier);
  return 0;
}

j'espère que vous pouvez encore m'aider