Ouverture et écriture de données en C++

Résolu/Fermé
cric - 30 nov. 2010 à 10:15
 cric - 30 nov. 2010 à 16:25
Bonjour,



Voila, j'ouvre un fichier dans lequel il m'écrit mes données:

ofstream fichier("donnees.txt",ios::out | ios::trunc);
fichier <<"temps: "<< temps<<endl;

Puis je lui demande d'écrire une autre donnée :

if(i<Nevent-1){
Histo2D->Fill(energy[i+1],delta_energy[i]);
}
fichier<<"energy= "<<energy[i]<< endl;
//cout << "energy: " << energy[i]<< endl;
fichier.close()

Le problème c'est qu'il n'écrit pas dans le fichier donnee, l'énergie. Par contre quand je fais un cout il me sort toutes les énergies.
Pouvez-vous m'aider?
Merci d'avance

6 réponses

Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 1 328
30 nov. 2010 à 11:04
Est-ce qu'il a ecrit le temps ?
vérifie l'état de ton flux avant d'écrire dedans.
0
oui il a écrit le temps
0
Bon ben ce que j'ai fais j'ai créé un nouveau fichier
ofstream donnees("d.txt",ios::out | ios::trunc);
donnees<<"energy= "<<energy[i]<< endl;
donnees.close();

Mais il m'affiche qu'une valeur et ce qu'il faurait c'est qu'il m'affiche toutes les valeurs.
Je ne vois pas où est le problème...
0
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 1 328
30 nov. 2010 à 14:03
là comme ça, on ne peux savoir. Mets un morceau substantiel de ton code ou un démonstrateur du problème.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
en fait, je lis des données au départ. Puis après je trace des histos d'énergie. Jusqu'ici tout va bien. Et c'est quand je lui demande d'écrire energy[i] qu'il m'écrit une seule valeur contrairement au cout où il me sort une multitude de valeurs.

for(int i=0; i<Nevent; i++){

if(i<Nevent-1){
Histo2D->Fill(energy[i+1],delta_energy[i]);
}

ofstream donnees("d.txt",ios::out | ios::trunc);
donnees<<"energy= "<<energy[i]<< endl;
donnees.close();
//cout << "energy : " << energy[i]<< endl;
Histo_energy->Fill(energy[i]);

etc..}
0
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 1 328
30 nov. 2010 à 16:02
C'est normal si tu ouvre à chaque fois ton fichier dans la boucle, tu écrases ce que tu as écrit avant. Je crois que si tu voulais faire comme ça, il faudrai mettre ios::app et non ios::trunc.
Mets ce qui concerne le fichier en dehors de la boucle et ça devrais fonctionné. Et en plus ça sera plus optimiser (ouvrir et fermer un fichier ça prend du temps).
0
merci!!
0