C++ : Ajouter une ligne à un fichier txt

Discutez d'informatique ici !
rattlesnake
Membre Naturel
Messages: 29
Enregistré le: 15 Aoû 2014, 15:01

C++ : Ajouter une ligne à un fichier txt

par rattlesnake » 11 Sep 2014, 11:02

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 !



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 11 Sep 2014, 11:13

salut,

ben tu ouvres le fichier (fstream std::ios::out|std::ios::app), t'ajoutes \n, et tu clos le fichier?
EDIT: en début de fichier pas vu,
ben tu peux surfer :
Code: Tout sélectionner
std::ifstream in("textfile.txt");
std::ostringstream out;
out << "\n"<<in.rdbuf();


ou bien de manière plus générique en cherchant pour copier des fichiers
la vie est une fête :)

rattlesnake
Membre Naturel
Messages: 29
Enregistré le: 15 Aoû 2014, 15:01

par rattlesnake » 12 Sep 2014, 17:02

fatal_error a écrit:salut,

ben tu ouvres le fichier (fstream std::ios::out|std::ios::app), t'ajoutes \n, et tu clos le fichier?
EDIT: en début de fichier pas vu,
ben tu peux surfer :
Code: Tout sélectionner
std::ifstream in("textfile.txt");
std::ostringstream out;
out << "\n"<<in.rdbuf();


ou bien de manière plus générique en cherchant pour copier des fichiers



Merci pour ta réponse
J'ai pu le faire grâce à ça :
Code: Tout sélectionner
// nom de fichier temporaire utilisable
              char *tmp = std::tmpnam(NULL);
            // Note: valide jusqu'au prochain appel à tmpnam
            // On ouvre le source
            std::ifstream ifs(filename0.c_str());
            // On ouvre le temporaire
            std::ofstream ofs(tmp);
            // On écrit la ligne d'en tete dans le temporaire
            ofs << "ligne ajoutée" << std::endl;            
            // On copie le source dans le temporaire
            ofs << ifs.rdbuf();
            // on ferme le tout
            ofs.close();
            ifs.close();
            // On supprime le source
            std::remove(filename0.c_str());
            // On renomme le temporaire avec le nom du source
            std::rename(tmp, filename0.c_str());

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 12 Sep 2014, 17:08

ya pas besoin de fichier temporaire:
Code: Tout sélectionner
{
 std::ifstream inFile("machin.txt");
 std::stringstream oss;
 oss
#include
int main(){
  std::fstream f("test.txt", std::ios::in|std::ios::out);
  std::stringstream oss;
  oss<<"hello \n"<<f.rdbuf();
  f.seekp(0)<<oss.str();
  return 0;
}
la vie est une fête :)

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite