IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Suppression des caractères spéciaux d'un fichier ou string


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Suppression des caractères spéciaux d'un fichier ou string
    Salutations
    je débute dans le développement avec c++, j'ai un petit problème avec la suppression de caractères spéciaux d'un fichier texte ou du string extrait de ce dernier
    quelqu'un pourrai-t-il m'aider
    voici mon code source
    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
     
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <algorithm>
     
    int main()
    {
    	std::ifstream fichier("fichier.txt");
    	std::ofstream resultat("resultat.txt");
    	if (fichier.good())
    	{
    		while(fichier.good())
    		{
    			std::string tmp;
    			fichier>>tmp;
                if (!fichier.fail())
                resultat << tmp << "\n";
    		}
     
    		fichier.close();
    	}
     
    	return 0;
    }
    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Hello

    Que cherches-tu à faire, qu'as-tu essayé de faire et quel point bloque exactement ? Ton programme n'aide pas et "caractères spéciaux", sans autre précisions, ne veut rien dire. Quoi qu'il en soit, le if avant le while est inutile, ton programme peut s'écrire comme ça :

    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
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <algorithm>
     
    int main()
    {
      std::ifstream fichier("fichier.txt");
      std::ofstream resultat("resultat.txt");
      std::string tmp;
      while(fichier >> tmp)
          resultat << tmp << "\n";
     
      return 0;
    }
    Find me on github

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    il faut que je segmente le fichier en unité lexicales et préparer une liste de délimiteurs de texte (exp. blanc, virgule, point, tiret …etc) puis rechercher ces délimiteurs dans le texte original pour séparer les unités lexicales, les afficher et les stocker dans un autre fichier.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <algorithm>
     
    int main()
    {
    	std::ifstream fichier("fichier.txt");
    	std::ofstream resultat("resultat.txt");
    	if (fichier.good())
    	{
    		while(fichier.good())
    		{
    			std::string tmp;
    			fichier>>tmp;
    				int i=0,len=tmp.length();
    				while(i<len)
    				{
    				char c=tmp[i];
    				if(((c>='0')&&(c<='9'))||((c>='A')&&(c<='Z'))||((c>='a')&&(c<='z'))) 
    				{
    				if((c>='A')&&(c<='Z')) tmp[i]+=32;
    				++i;
    				}
    				else
    				{
    				tmp.erase(i,1);
    				--len;
    				}
    				}
    			if (!fichier.fail())
                resultat << tmp << "\n";
    		}
     
    		fichier.close();
    	}
     
    	return 0;
    }

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Utilisez la balise CODE, SVP.
    Utilisez des expressions régulières http://www.cplusplus.com/reference/regex/regex/
    ou directement un générateur d'analyseur lexical : http://www.developpez.net/forums/d13...lex-bison-cpp/

Discussions similaires

  1. Réponses: 13
    Dernier message: 06/12/2011, 14h17
  2. Réponses: 2
    Dernier message: 22/09/2010, 10h01
  3. Suppression des caractères spéciaux
    Par chebmo90 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2009, 15h44
  4. Réponses: 0
    Dernier message: 27/12/2008, 15h44
  5. [RegEx] Suppression des caractères spéciaux et nombres
    Par kenny.kev dans le forum Langage
    Réponses: 6
    Dernier message: 03/03/2008, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo