éliminer les mots vides d'un fichier texte [Résolu]

Messages postés
90
Date d'inscription
samedi 5 juin 2010
Dernière intervention
6 mars 2015
- - Dernière réponse : cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Dernière intervention
6 mars 2015
- 28 sept. 2010 à 10:13
bonjour,
j'ai un petit truc qui me bloque,
je veux éliminer du fichier texte in les mots qui existent dans le fichier texte motvide et mettre le résultat dans le fichier texte out.
ce code me permet de le faire sauf pour le premier mot du texte in qui n'ai pas traité (c'est à dire si c'est un mot vide il n'est pas supprimé)
j'espère que quelqu'un peut m'aider à trouver la cause.

#include 
#include <fstream>
#include <string>
#include <list>
#include 


void compare()
{
  int i 0, num_ligne 0;
  ifstream ifs("in.txt") ;
  ofstream ofs("out.txt");
  std::string s;
  std::list<std::string> ma_liste;

  ifstream entree ("motvide.txt");
  std::string mot;
  while (entree >> mot)
ma_liste.push_back(mot);


  while (ifs >> s)
  {std::list<std::string>::const_iterator
lit (ma_liste.begin()),
lend(ma_liste.end());
  for(;lit!=lend;++lit)
 {
   if ( s == *lit)
 {
   i = 1;
   break;
 }
 }
if (i!=1)

   ofs << s << " ";
i=0;

  }

}


int main()
{
  compare();
  return 0;
}
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
164
3
Merci
Tu as du te mélanger les pinceaux avec la gestion du "i". J'ai pas vraiment regardé.
J'ai juste découpé ton code en petite fonction, et l'erreur c'est corrigé d'elle même, c'est magique :)

#include 
#include <fstream>
#include <list>

bool isInList(const std::string& word, const std::list<std::string>& list)
{
  typedef std::list<std::string>::const_iterator iter;
  for (iter it = list.begin(); it != list.end(); ++it)
    if (word == *it)
      return true;

  return false;
}

void loadEpmptyWordList(const std::string& filename, std::list<std::string>& list)
{
  std::ifstream file(filename.c_str());
  if (!file)
  {
    std::cerr << "Unable to open the file: " << filename << std::endl;
    return;
  }
  std::string word;
  while (file >> word)
    list.push_back(word);
}

void compare()
{
  std::list<std::string> ma_liste;
  loadEpmptyWordList("motvide.txt", ma_liste);

  // TODO: Tester la réussite de l'ouverture de fichier pour in.txt !
  std::ifstream ifs("in.txt");
  std::ofstream ofs("out.txt");
  std::string s;
  while (ifs >> s)
    if (!isInList(s, ma_liste))
ofs << s << " ";
}

int main()
{
  compare();
  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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Dernière intervention
6 mars 2015
0
Merci
merci pour l'aide, mais l'erreur existe encore pour le premier mot, c'est à dire si le premier mot de in est un mot vide il n'est pas supprimé alors qu'il doit être supprimé
Commenter la réponse de cs_mervat
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
164
0
Merci
Tu es sur ? As-tu un exemple ?

J'ai lancé mon programme comme suit:
motsvides.txt
toto titi tutu tata

in.txt
toto hey titi ca va tutu ?

et j'obtiens
out.txt
hey ca va ?


________________________________________________________________________
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
Commenter la réponse de cptpingu
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Dernière intervention
6 mars 2015
0
Merci
c'est vraiment bizarre

voila mon exemple:

motsvides.txt
c'est a le



in.txt
a vendredi le 2 a juillet



et j'obtiens
out.txt
a vendredi 2 juillet
Commenter la réponse de cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Dernière intervention
6 mars 2015
0
Merci
et j'ai d'ailleurs essayé plusieurs exemples et toujours le premier mot n'est pas supprimé
Commenter la réponse de cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Dernière intervention
6 mars 2015
0
Merci
bonjour, enfin j'ai trouvé la faute,
le code est tout a fait juste, le problème était dans mes fichiers d'entrée,
lorsque j'ai changé le nom de ces fichiers j'ai obtenu de bons résultats.
merci encore Mr cptPingu car c'est grâce à vous que j'ai connu l'origine de ma faute.
Commenter la réponse de cs_mervat

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.