PDA

View Full Version : [c++] fstream


Hasard992
17-09-2009, 15:30
Probabilmente è un bug perchè non ho mai avuto un problema del genere prima d'ora però siccome è molto tempo che non uso fstream lo chiedo lo stesso.
Mi serve un programma che apre un file, va alla fine e a capo nel file.txt e scrive qualcosa.. Voi come fareste ?? Io non ci sono riuscito in nessun modo.

p.s. specificate gli headers perchè forse faccio confusione tra iostream fstream ecc ecc.. Grazie mille !!!

tomminno
17-09-2009, 19:00
#include <fstream>

fstream fs;
fs.open ("file.txt", fstream::out | fstream::app);
fs << endl << "quello che ti pare" << endl;


oppure più comodamente:


#include <iostream>

ofstream ofs("file.txt", ios::app);
ofs << endl << "quello che ti pare" << endl;

Hasard992
17-09-2009, 19:05
Inanzitutto grazie mille per la risposta purtroppo il primo metodo da te consigliato non funziona e non riesco a capire il motivo. Inoltre se metto in fstream.open()
fstream::in o out o app il comando non funziona, li levo e riesce a scrivere su file senza pero andare alla fine delle varie righe che potrebbero gia essere presenti nel file. Adesso proverò con ofstream. Secondo voi perchè fa così ?? Ho ripreso un vecchio programma e tutto funziona correttamente, cosa potrebbe dare fastidio ???

Hasard992
17-09-2009, 22:18
Vi descrivo emglio la situazione: il file da modificare è più o meno cosi:

1 //numero che indica quante stringhe ci sono di seguito
dadadadaad-dadadaada //nella stringa è sempe presente un trattino !

Il programma deve semplicemente aggiungere( ogni volta che viene avviato ) una nuova stringa dello stesso tipo, e di conseguenza cambiare il numero.
Perciò, siccome non so più come fare, avevo pensato al seguente codice:

fstream fs;
int x;
fs.open("file.txt");
fs>>x;
for(int i=0;i<x;i++){
fs.ignore(256,'-'); //ignora fino al trattino
fs.ignore(256,'\n'); //ignora fino a che non va a capo
}
fs<<nuovastringa;
fs.close();

Anche questo però non funziona, forse è sbagliata la sintassi della ignore() ??
Che pizza mi sembra una cosa molto semplice da fare eppure non ci riesco..