Newsgroup: it.comp.lang.c++
Titolo: I/O

Ciao ho un problema assurdo
devo scrivere un banale fale ascii 
ecco uno spezzone
  fstream out;
  out.open("c:/devis.txt");
  ...
  out.close;
  ...
 
  Sicuramente sbaglio io, ma se il file non esiste non dovrebbe crearlo?
  Se si può essere colpa del compilatore?
  Se no mi date una dritta.
ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
fstream::open
void open( const char* szName, int nMode, int nProt = filebuf::openprot);
nMode
An integer that contains mode bits defined as ios enumerators that can be 
combined with the bitwise OR ( | ) operator. The nMode parameter must 
have one of the following values: 
ios::app   The function performs a seek to the end of file. When new 
bytes are written to the file, they are always appended to the end, even 
if the position is moved with the ostream::seekp function.
ios::ate   The function performs a seek to the end of file. When the 
first new byte is written to the file, it is appended to the end, but 
when subsequent bytes are written, they are written to the current 
position.
ios::in   The file is opened for input. The original file (if it exists) 
will not be truncated.
ios::out   The file is opened for output.
ios::trunc   If the file already exists, its contents are discarded. This 
mode is implied if ios::out is specified, and ios::ate, ios::app, and 
ios:in are not specified.
ios::nocreate   If the file does not already exist, the function fails.
ios::noreplace   If the file already exists, the function fails.
ios::binary   Opens the file in binary mode (the default is text mode).
Note that there is no ios::in or ios::out default mode for fstream 
objects. You must specify both modes if your fstream object must both 
read and write files.
-- 
Luc.

   Se no mi date una dritta.
deduco dal tuo codice che stai usando windows. Il separatore di directory e'
\, non /
Alcune versioni di windows sono *intelligenti* e convertono automaticamente
/ in \, ma la sintassi corretta  e:
out.open ("c:\\devis.txt");
out.close();
ciao
Alex


Per forza, manca il secondo parametro che indica la modalità di apertura.
Puoi scrivere direttamente così:
std::ofstream out("c:\\devis.txt", ios::out);
Se devi soltanto scrivere sullo stream dichiara out come sopra. Da notare le
due barre rovesciate: se ne scrivessi solo una il compilatore altererebbe la
stringa.
Saluti.

 Per forza, manca il secondo parametro che indica la modalità di apertura.
fstream ha un costruttore che di default assegna openmode
explicit basic_fstream(const char *s, ios_base::openmode mode = ios_base::in
| ios_base::out);
Ciao
Alex

 | ios_base::out);
dimenticavo..e ha anche un metodo open con gli stessi argomenti
void open(const char *s, ios_base::openmode mode =  ios_base::in |
ios_base::out)
Alex

  out.close;
Devi utilizzare ofstream.
std::ofstream out;
out.open("c:/devis.txt",std::ios_base::out);	
/*...........*/
in tale caso se il file non esiste ne viene creato uno nuovo vuoto.
Se invece vuoi essere certo che il file venga azzerato anche se
esistente usa il flag trunc in addizione con out.
out.open("c:/devis.txt",std::ios_base::out | std::ios_base::trunc);
C'é da dire che per la classe ofstream il flag openmode é per default
out, ma io per chiarezza preferisco metterlo comunque.
Il Ghenio
---------
// TODO: Place your ass here