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

Contribuez C++ Discussion :

[FAQ][C++]Supprimer une ligne d'un fichier


Sujet :

Contribuez C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 7
    Points
    7
    Par défaut [FAQ][C++]Supprimer une ligne d'un fichier
    Pour supprimer une ligne d'un fichier, il faut copier dans un buffer le contenu du fichier excepté la ligne à supprimer et ensuite réécrire le buffer dans ce fichier sans concaténation.
    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
    #include <string>
    #include <fstream>
     
    void Erase_Line(char* File, int Line_to_Erase)
    {
        std::string Buffer = ""; //Variable contenant le texte à réécrire dans le fichier
        std::ifstream ReadFile( File);
        if (ReadFile) //Si le fichier est trouvé
        {
            std::string line;
            int Line = 0;
            while ( std::getline( ReadFile, line ) ) //on parcours le fichier et on initialise line à la ligne actuelle
            {
                Line++;
                if(Line != Line_to_Erase) //Si la ligne atteinte est différente de la ligne à supprimer...
                    Buffer += line + "\n"; //On ajoute le contenu de la ligne dans le contenu à réécrire
            }
        }
        ReadFile.close(); //On ferme le fichier en lecture
     
        std::ofstream WriteFile( File ); //On ouvre ce même fichier en écriture
        WriteFile << Buffer; //On écris le texte dedans
        WriteFile.close(); //et on ferme le fichier
    }
     
    int main()
    {
        Erase_Line("file.txt", 1); //Suppression de la 5eme ligne de file.txt
        return 0;
    }

  2. #2
    Futur Membre du Club
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Merci.

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Pourquoi un buffer intermédiaire ?
    Pourquoi un char* non const ?

    PS: dans mes souvenirs il existe des fonctions non standards qui permettent de couper un fichier. Donc pour un retrait, on cherche la position de retrait et on écrit ce qui suit à partir du point de retrait (comme avec std::remove()). Et à la fin, on coupe.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 28/03/2006, 14h19
  2. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 01h33
  3. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 16h43
  4. Supprimer une ligne dans un fichier
    Par tsing dans le forum Linux
    Réponses: 4
    Dernier message: 06/02/2006, 14h45
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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