Bonjour ! Je crois que tout est dans la question. Merci d'avance ! ;)
Version imprimable
Bonjour ! Je crois que tout est dans la question. Merci d'avance ! ;)
Il faut passer par un fichier intermédiaire
Je ne sais pas si j'ai mal compris la question (pourquoi devoir passer par un fichier intermédiaire!?).
Tu ouvres le fichier avec un std::ifstream, de là tu te déplaces à la fin du fichier avec la méthode seekp(0,ios_base::end) (cf. http://www.cplusplus.com/reference/i...am/seekp.html), puis tu écris avec l'opérateur <<.
Bonne journée!
Parce que si on fait comme tu le suggères, on va écraser les données qui se trouvent après la position d'écriture. Pour insérer du texte il faut bien passer par un fichier ou tout du moins un buffer temporaire.Citation:
pourquoi devoir passer par un fichier intermédiaire!?
Je ne m'en étais jamais rendu compte :oops: lol
Ce n'est quand même pas très bien fait ;) (ouhla je sens que je vais me faire assassiner là :D)
Quelqu'un pourrait m'expliquer pourquoi la fin du fichier est écrasée?
avec "ABCDEFGHIJKLMNOPQRSTUVWXYZ" écris dans le fichier testfile.txt, j'obtiens après exécution:Code:
1
2
3
4
5
6
7
8
9
10
11 std::fstream exemple; exemple.open("C:\\testfile.txt", std::ios_base::out | std::ios_base::trunc); exemple << "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; exemple.close(); std::fstream file; file.open("C:\\testfile.txt", std::ios_base::in | std::ios_base::out); file.seekg(std::ios_base::end); file << "\n123456789\n"; file.close();
Pourquoi cela commence à partir du troisième caractère (c qui est remplacé par \n)?Code:
1
2
3
4 AB 123456789 PQRSTUVWXYZ \n
Lorsque je met file.seekp(0,std::ios_base::end), là ça commence bien à partir de Z et ça remplit dans l'ordre inverse...
seekg c'est la position de lecture, seekp celle d'écriture.
Ok, merci beaucoup :)