C++ : Ajouter une ligne à un fichier txt

C++ : Ajouter une ligne à un fichier txt - C++ - Programmation

Marsh Posté le 11-09-2014 à 10:54:33    

Bonjour,
 
Ma question est assez simple, j'aimerais connaître le moyen d'ajouter une ligne en début de fichier par le biais de code c++ (et non par shell avec sed)
 
Merci d'avance !


Message édité par rattlesnake le 11-09-2014 à 11:25:58
Reply

Marsh Posté le 11-09-2014 à 10:54:33   

Reply

Marsh Posté le 11-09-2014 à 13:27:46    

Il y a pas 36 méthodes en C ou C++: faut passer par un fichier ou on copie successivement son en tête puis le fichier original.
Par exemple ceci:
 

Code :
  1. #include <cstdio>
  2. #include <fstream>
  3. int main() {
  4.     // nom de fichier temporaire utilisable
  5.     char *tmp = std::tmpnam(NULL);
  6.     // Note: valide jusqu'au prochain appel à tmpnam
  7.     // On ouvre le source
  8.     std::ifstream ifs("testapp.txt" );
  9.     // On ouvre le temporaire
  10.     std::ofstream ofs(tmp);
  11.     // On écrit la ligne d'en tete dans le temporaire
  12.     ofs << "ligne d'en tete" << std::endl;
  13.     // On copie le source dans le temporaire
  14.     ofs << ifs.rdbuf();
  15.     // on ferme le tout
  16.     ofs.close();
  17.     ifs.close();
  18.     // On supprime le source
  19.     std::remove("testapp.txt" );
  20.     // On renomme le temporaire avec le nom du source
  21.     std::rename(tmp, "testapp.txt" );
  22.     return 0;
  23. }


Code a améliorer car il ne tient pas compte des problèmes pouvant survenir:
échec de la création d'un des deux streams, du remove ou du rename...
J'ai supposé qu'il s'agissait de fichiers texte (sinon, ouvrir en mode binaire).
 
A+,


Message édité par gilou le 11-09-2014 à 13:44:26

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-09-2014 à 15:40:39    

Je le modifie pour que ça colle avec ce qui m'est demandé mais ça fonctionne !
Merci pour ta réponse !     :)


Message édité par rattlesnake le 12-09-2014 à 15:43:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed