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 :

supprimer texte entre deux chaine de caractere


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Points : 35
    Points
    35
    Par défaut supprimer texte entre deux chaine de caractere
    bonjour a tous,
    je desire effacer une partie d'un fichier entre deux chaine de caractere.
    j'ai essayer avec le code suivant mais ça ne marche pas. ça me copie le fichier comme il est sans rien effacer. je suppose qu'il ne trouve pas les chaine que je lui indique dans les boucle while.

    est ce que vous pouvez me dire comment faire mais en utilisant les CString?

    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
    int CCAODlg::modifier_fichier(char const * const source, char const * const destination)
    {
    	FILE* fSrc;
    	FILE* fDest;
    	char buffer[512];
    	int NbLus;
     
    	if ((fSrc = fopen(source, "rb")) == NULL)
    	{
    		return 1;
    	}
     
    	if ((fDest = fopen(destination, "wb")) == NULL)
    	{
    		fclose(fSrc);
    		return 2;
    	}
     
    	while (((NbLus = fread(buffer, 1, 512, fSrc)) != 0) && (buffer != ".BOARD_OUTLINE"))
    	{
     
    		fwrite(buffer, 1, NbLus, fDest);
    	}
    	while (((NbLus = fread(buffer, 1, 512, fSrc)) != 0) &&  (buffer != ".PLACEMENT"));
    	while ((NbLus = fread(buffer, 1, 512, fSrc)) != 0)
    	{
    		fwrite(buffer, 1, NbLus, fDest);
    	}
    		fclose(fDest);
    		fclose(fSrc);
     
    		return 0;
    }
    ps: c'est pour une application MFC avec Visual C++
    je vous remercie

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    ben et si tu demandais au forum C?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    mais justement non...
    je travaille en c++ et j'ai besoin qu'on me dit comment le faire en c++

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Mal parti alors. Ceci est du C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FILE* fSrc;
    FILE* fDest;
    char buffer[512];
    ...
    Mais si ça peut t'aider, voici une petite fonction qui m'aide très souvent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void FindAndReplace(std::string & s,const char *os,unsigned oslen,const char *ns,unsigned nslen)
    {
    	if (os==0 || oslen==0)
    		return;
    	for (std::string::size_type pos=0;(pos=s.find(os,pos,oslen))!=s.npos;pos+=nslen)
    		s.replace(pos,oslen,ns,nslen);
    }

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    je sais que mon code est en C. comment remplacer tout cela en C++?
    a quoi sert cette fonction?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    en C++ on utilise des std::string, des flux ( std::cout, std::fstream pour les fichiers, std::istringstream pour les opérations de string... )

    Dans ton cas le mieux est peut être de lire l'intégralité du fichier, puis d'effectuer le traitement que tu veux, et enfin le réécrire.

    Tu trouveras plein d'outils C++ dans la FAQ associé.

    Si tu veux utiliser des fopen etc.., il faut aller voir du côté du C

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Ah, tu veux qu'on te traduise le C en C++...

    Voici déjà comment traduire le début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	FILE* fSrc;
    	FILE* fDest;
    	char buffer[512];
    En C++ on aurait par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	std::ifstream fSrc;
    	std::ofstream fDest;
    	std::string buffer;
    Quelqu'un d'autre se dévoue pour la suite ?

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,
    Citation Envoyé par camboui Voir le message
    Ah, tu veux qu'on te traduise le C en C++...

    Voici déjà comment traduire le début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	FILE* fSrc;
    	FILE* fDest;
    	char buffer[512];
    En C++ on aurait par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	std::ifstream fSrc;
    	std::ofstream fDest;
    	std::string buffer;
    Quelqu'un d'autre se dévoue pour la suite ?
    J'aurais même fais mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	std::ifstream fSrc(source);
    	std::ofstream fDest(destination);
    	std::string buffer;
    Autant profiter du RAII lorsqu'il existe

    Et, pour quand même mettre sur la voie, l'étape suivate serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!fSrc)
        throw OpeningSourceFileFailled();
    if(!fDest)
        throw OpeningDestinationFileFailled();
    (OpeningSourceFileFailled etOpeningDestinationFileFailled étant à définir )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Récupérer du texte entre deux chaines de caractères
    Par Globolite dans le forum Langage
    Réponses: 3
    Dernier message: 10/07/2014, 16h38
  2. Réponses: 1
    Dernier message: 02/12/2009, 16h18
  3. Supprimer du texte entre deux "balises"
    Par Monky dans le forum Microsoft Office
    Réponses: 5
    Dernier message: 12/03/2009, 17h18
  4. Réponses: 7
    Dernier message: 03/02/2006, 13h50
  5. supprimer texte entre deux balises specifiques
    Par HurtMarley dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2006, 18h30

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