Newsgroup: it.comp.lang.c++
Titolo: Come si fa ad aprire un file in modalità append?

Come da oggetto, qual'è la sintassi da usare?
Ho provato
ofstream outfile ("miofile.abc" 2);
ofstream outfile ("miofile.abc" ios_base::app);
ma non funzionano
Grazie
-- 
Posted from 
smtp2.libero.it
 [193.70.192.52] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
news:3AA400EA...@hotmail.com...


ho provato
ostream outfile ("ciao.txt", ios_base::app)
ma mi dice che non è definito nel namespace... o qualcosa simile...
io includo fstream e basta.
Grazie
Luigi


 wrote in message
news:3AA54876...@hotmail.com...


 promuove tutti i nomi di librerie nel namespace corrente, giusto?
No
Comunque adesso provo a metterlo e a usare app invece di ios_base::app
ciao
-- 
Posted from 
smtp1.libero.it
 [193.70.192.51] 


Ho provato con ios_base::app, solo con app, senza e con "using namespace
std;" ma non funziona!
Come devo fare per scrivere in append su un semplice file di testo?
Grazie
Luigi
-- 
Posted from 
smtp3.libero.it
 [193.70.192.53] 



Ciao Luigi,
prova a copiare e incollare questo:
#include <fstream>
int main()
{
    fstream miofile;
    miofile.open("miofile.txt", ios_base::app);
    miofile << endl << "appendo!" << endl;
    miofile.close();
}
e poi esegui varie volte il programma per vedere se ti appende la scritta
appendo!
Ciao
Mauro

"Maurus" <REMOVE...@rocketmail.com-REMOVE> wrote in message
news:98a4k1$40e$1...@newstoo.ericsson.se...

Per me non dovrebbe compilare. Consiglio di modificare come segue:
#include <fstream>
int main()
{
    std::fstream miofile("miofile.txt", std::ios::app);
    miofile << "appendo!" << endl;
    return 0;
}
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556


Scusami Andrea ma la tua versione non compila perche´ manca std:: davanti a
endl, e comunque pur mettendocelo non fa il suo dovere perche´ non crea il
file con la stringa appesa.
Il problema pensavo fosse nel fatto che non chiudessi il file con
miofile.close(), ma anche provando a metterlo non andava.
Alla fine ho dichiarato mio file non fstream ma bensi´ ofstream e finalmente
funziona.
Con il VC++ 6 questo va:
#include <fstream>
using namespace std;
 int main()
 {
     ofstream miofile;
     miofile.open("miofile.txt", ios_base::app);
     miofile << "appendo!" << endl;
     miofile.close();
     return 0;
 }
Ciao
Mauro

  }
Gia'. A questo punto puoi incorporare la open nel costruttore e sfruttare il
distruttore per la close.


Ecco il mio sorgente (modificato in modo da essere come quello tuo)
#include <fstream>
using namespace std;
 int main()
 {
     ofstream outfile;
     outfile.open("/home/luigi/prova.txt", ios_base::app); <- errore
segnalato
     outfile << "ciao" << endl;
     oufile.close();
     return 0;
 }
L'errore che ho è che ios::base non è dichiarato.
Io uso g++, perché ho Linux... è questo il problema?
Grazie
Luigi
-- 
Posted from 
smtp1.libero.it
 [193.70.192.51] 


 L'errore che ho è che ios::base non è dichiarato.
Scusa ma nel codice c'e' scritto ios_base e nell'errore ios::base ?? Non ci
credo!


 credo!
Ops, volevo dire ios_base, cmq ho ricontrollato/ricompilato il sorgente
ed è sempre la stessa cosa :(
possibile che (io) non riesca a scrivere su uno stupido file senza
togliere il contenuto preesistente?
Boh!
-- 
Posted from 
smtp2.libero.it
 [193.70.192.52] 


 Boh!
Sembra proprio che tu sia unico (ma non lo siamo forse tutti noi?).
Guarda un po':
MLO@mlinux 12 $ cat foo.cxx
#include <iostream>
#include <fstream>
int main() {
  std::ofstream of("vispa.txt", std::ios_base::out);
  of << "La vispa Teresa avea tra l'erbetta\n";
  of.close();
  return 0;
}
MLO@mlinux 13 $ cat bar.cxx
#include <iostream>
#include <fstream>
int main() {
  std::ofstream of("vispa.txt", std::ios_base::out | std::ios_base::app);
  of << "al volo sorpresa gentil farfalletta\n";
  of.close();
  return 0;
}
MLO@mlinux 14 $ g++ -ansi -Wall -o foo foo.cxx && ./foo
MLO@mlinux 15 $ cat vispa.txt
La vispa Teresa avea tra l'erbetta
MLO@mlinux 16 $ g++ -ansi -Wall -o bar bar.cxx && ./bar
MLO@mlinux 17 $ cat vispa.txt
La vispa Teresa avea tra l'erbetta
al volo sorpresa gentil farfalletta
MLO@mlinux 18 $
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
The instructions said to use Windows 98 or better - so I installed FreeBSD.

togliere il contenuto preesistente?
La libreria standard del C++ fornita con g++ fino alla versione 2.95.2 non
implementa ancora ios_base, ma fa uso di ios.
la versione accettata da g++ fino alla versione 2.95.2 è la seguente
#include <fstream>
// using namespace std; // può essere omesso, ma è meglio metterlo ;)
ofstream out("myfile.txt", ios::out | ios::app);
Ad ogni modo lo standard prevede l'uso di std::ios_base per le modalità di
apertura.
Ciao
Domenico Barra

 implementa ancora ios_base, ma fa uso di ios.
Infatti la versione che ho postato io usa libstdc++ 2.91.  Chiedo
scusa se ho provocato confusione.


  std::ofstream of("vispa.txt", std::ios_base::out | std::ios_base::app);
Tutto d'un tratto mi prende un attacco di nostalgia...
  FILE *f=fopen("vispa.txt","a");
Quanto e' piu' chiara, dinamica, compatta e comprensibile questa
istruzione...
Tutt'al piu' avrei capito qualcosa come...
  std::file f("vispa.txt","a");
per aiutare gli sbadati che dimenticano di chiudere i file
Bah... si stava meglio quando si stava peggio ;)
Andrea
PS:
  Ma anche su cose fondamentali come ios_base hanno fatto
  cambiamenti dell'ultimo minuto ? Hmmm... che tristezza.
  La versione attuale quanto si prevede durera' ?
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 scusa se ho provocato confusione.
agli effetti guardo sempre con molto interesse ai tuoi esempi di codice ed ho
notato che utilizzi una versione della libstdc++
che non viene fornita di base con le varie distro linux, fra le varie cose con le
vers standard non si trovano gli sstream, numeric_limit e
la stessa iostream è diversa fra la 2.90.1 e la 2.90.7 e successive (stessa cosa
in g++Win32).
ciao Nicola Z.