2017-07-06 4 views
-3
#include<iostream> 
#include<fstream> 
using namespace std; 
string dataFile = "data.txt"; 
int counter; 

int main() 
{ 
    string input =""; 
    fstream data; 
    data.open(dataFile, ios::app | ios::out | ios::in); 
    getline(data, input); 
    if (input == "")//The file must be new 
    { 
     counter = 0; 
    }else { 
     counter = stoi(input); 
    } 

    /* 
     Program does some stuff that increases the counter 
     Right before program ends we update the file 
    */ 
    data.clear(); 
    data << counter; 
    data.close(); 
    return 0; 
} 

Voici donc un exemple de code. La première fois que vous exécutez le programme, le compteur commence à 0, ce qui est précis. Disons que vous obtenez 10 points dans cette partie du jeu. Votre compteur sera 10 lorsque le jeu se termine, et il est stocké dans le fichier sans problème. Donc, rouvrons l'application, vous voyez que le compteur est 10, cool, et vous gagnez 6 points cette fois. Donc, dans le jeu, le compteur lit 16. Avant que l'application se ferme, 16 est écrit dans data.txt.C++ Comment écraser des données dans un fichier texte en C++?

À l'intérieur du fichier data.txt, il lit 1016, ce qui n'est pas exact!

Comment puis-je effacer le texte à l'intérieur de data.txt juste avant d'écrire mes informations de compteur précises dans le fichier?

Je lisais ailleurs que vous ne pouvez pas effacer le contenu d'un fichier en utilisant fstream, y a-t-il un moyen plus efficace d'écraser les données dans un fichier?

Merci.

+0

Veuillez prendre le [tour] (https://stackoverflow.com/tour) et lisez la page [help] (https://stackoverflow.com/help). – Ron

Répondre

2

Lire le fichier en mémoire. Mettez à jour les valeurs. Réécrivez le fichier.