Bonjour ! Je crois que tout est dans la question. Merci d'avance !![]()
Bonjour ! Je crois que tout est dans la question. Merci d'avance !![]()
Il faut passer par un fichier intermédiaire
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...
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.pourquoi devoir passer par un fichier intermédiaire!?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Je ne m'en étais jamais rendu comptelol
Ce n'est quand même pas très bien fait(ouhla je sens que je vais me faire assassiner là
)
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Partager