Newsgroup: it.comp.lang.c++
Titolo: fstream non scrive

perché non produco nessun file a.txt??
#include <fstream>
using namespace std;
int main()
{
    fstream f;
    f.open("a.txt",fstream::in | fstream::out | fstream::app);
    f << "out";
    f.close();
    return 0;
}

Code:
--------------------
 
  #include <fstream>
 
  using namespace std;
 
  int main()
  {
  	fstream f;
  	f.open("a.txt", ios::out);
  	f << "out";
  	f.close();
  	return 0;
  }
 
--------------------
'C++ reference: fstream'
(
http://www.cplusplus.com/ref/iostream/fstream/
)
-- 
samuele70
------------------------------------------------------------------------
Inviato via 
http://www.freenfo.net/usenet
Profilo di samuele70: 
http://www.freenfo.net/usenet/member.php?userid=136

 (
http://www.cplusplus.com/ref/iostream/fstream/
)
infatti:
http://www.cplusplus.com/ref/iostream/fstream/open.html
io voglio aprirlo sia in scrittura che in lettura

 io voglio aprirlo sia in scrittura che in lettura
Code:
--------------------
 
  #include <fstream>
 
  using namespace std;
 
  int main()
  {
  	fstream f;
  	f.open("a.txt", fstream::in | fstream::out | fstream::app);
  	f << "out";
  	f.close();
  	return 0;
  }
 
--------------------
Allora il tuo programma va bene cosě com'č, ma non saprei perchč a te
non funziona.


 
uso g++ (GCC) 4.1.0 (SUSE Linux)

 perché non produco nessun file a.txt??
Prova questo:
------------
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
	fstream f;
	f.open("a.txt", fstream::in | fstream::out | fstream::app);
	f << "out";
	f.close();
	f.open("a.txt", fstream::in);
	if (f.good())
	{
		cout << "ok" << endl;
		f.close();
	}
	else
		cout << "forgetful hd" << endl;
}
------------
Kiuhnm

Kiuhnm wrote:

da errore, il file non esiste, non l'ha creato. Se però creo manualmente il
file non da errore, ma allo stesso tempo non scrive.
Su comp.lang.c++ c'è una discussione in data 15:16:17, sabato 28 ottobre
2006.

 file non da errore, ma allo stesso tempo non scrive.
Prova con questo.
---
#include <fstream>
using namespace std;
int main()
{
	/* fstream::in può far fallire open() se il file non esiste. */
	fstream f;
	f.open("a.txt", fstream::in);
	if (!f.good())
		f.open("a.txt", fstream::out);
	else
		f.close();
	f.open("a.txt", fstream::in | fstream::out | fstream::app);
	f << "out";
	f.close();
}
---
Kiuhnm

 using namespace std;

Perchè la combinazione delle optioni non è valida. È vietato app
con in. Ma anche senza app, non deve funzionnare, perche se c'è
in, bisogna che il file essista. (C'è un'eccezione: in|out|trunc
è permesso, per leggere d'un file garantisce vuoto. Non
domandarmi perche.)
--
James Kanze (Gabi Software)            email: 
james...@gmail.com
Conseils en informatique orientée objet/
                   Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, 
+33 (0)1 30 23 00 34

 domandarmi perche.)
Non lo sapevo, interessante... e non c'è nell'help del mio compilatore. 
Io uso ios_base::in e ios_base::out nelle fstream.open(), i costrutti 
fstream::in, ::out ecc. sono legati a un particolare compilatore o sono 
standard?
(questo della combinazione delle opzioni è esattamente il tipo di 
informazioncine bastarde che nessun libro ti dà mai e che devi trovare 
da solo dopo aver battuto la testa contro il muro per giorni. E' anche 
il motivo principale per cui odio il C++ e prevedo la sua fine prossima 
e l'avvento di un linguaggio meno scandalosamente cavilloso ^_^ )
P.S. dicevo spesso che gli errori in C++ sono dati male: questo è un 
esempio lampante. Se una data combinazione non è valida, perchè cavolo 
non viene segnalato un errore a runtime?
P.P.S. Nemmeno Kiuhnm lo sapeva ^_^

 P.P.S. Nemmeno Kiuhnm lo sapeva ^_^
Oh, non ritenerti giustificato :-)
Uso il C++ come asm di alto livello *senza* librerie quindi non 
m'interesso di queste cose.
Kiuhnm

 non viene segnalato un errore a runtime?
Era signalato. Hai avuto fail(). C'è realemente un problema coi
iostream, infatti, che non hanno abbastanza possibilità di
errore. È molto difficile sapere perche c'è stato errore.
--
James Kanze              Gabi Software   email: 
kanze...@neuf.fr


disponibile per un'utilisazione pratica).
Eh certo, come no :-)