web-dev-qa-db-fra.com

Ajout d'une nouvelle ligne dans un fichier (fichier journal) en c ++

J'ai une fonctionnalité de journalisation et j'ai ici des fichiers journaux. Maintenant, chaque fois que j'exécute le programme, je veux que le fichier précédemment écrit ne soit pas supprimé et qu'il soit ajouté aux données actuelles (ce qu'il y a toujours dans le fichier journal)

Juste pour être clair, par exemple: j'ai un fichier journal logging_20120409.log qui garde l'horodatage au quotidien. Supposons que j'exécute mon projet, il y écrit l'horodatage actuel. Maintenant, si je le relance, l'horodatage précédent est remplacé par lui. Je ne veux pas de cette fonctionnalité. Je veux l'horodatage précédent avec l'horodatage actuel.

Veuillez aider

28
gandhigcpp

Vous souhaitez ouvrir le fichier en mode "ajout", afin qu'il ne supprime pas le contenu précédent du fichier. Pour ce faire, spécifiez ios_base::app lorsque vous ouvrez le fichier:

std::ofstream log("logfile.txt", std::ios_base::app | std::ios_base::out);

Par exemple, chaque fois que vous l'exécutez, il ajoutera une ligne de plus au fichier:

#include <ios>
#include <fstream>

int main(){
    std::ofstream log("logfile.txt", std::ios_base::app | std::ios_base::out);

    log << "line\n";
    return 0;
}

Donc, la première fois que vous l'exécutez, vous obtenez

line

La deuxième fois:

line
line

etc.

51
Jerry Coffin

Utilisez quelque chose comme:

#include <fstream>
#include <iostream>
using namespace std;
int main() {
  ofstream out("try.txt", ios::app);
  out << "Hello, world!\n";
  return 0;
}

L'option ios: app ajoute la sortie à la fin du fichier au lieu de supprimer son contenu.

4
Ivaylo Strandjev

vous devez peut-être ouvrir le fichier avec l'option append. comme ça:

FILE * pFile;
pFile = fopen ("myfile.txt","a");

ou ca :

fstream filestr;
filestr.open ("test.txt", fstream::app)
1
WeaselFox