[C con Clase] ayuda con archivos o ficheros

Steven Richard Davidson stevenrichard.davidson en gmail.com
Jue Ene 26 13:43:41 CET 2012


Hola Miguel,

2012/1/26 Oso Impávido <mcubides en gmail.com>

> Buenos días,
>
> Viendo la respuesta de Steven me surge una duda, él sugiere usar:
>
> ofstream ofsDatos( "datos.dat", ios::out | ios::binary );
>
> En este caso... es realmente necesario usar la bandera ios::out?, es
> decir, el ofstream no la tiene por defecto? (de hecho se podría usar acaso  ofstream
> ofsDatos( "datos.dat", ios::out | ios::in | ios::binary ); tal y como si se
> trabajara con un fstream?).
>
>
Me temo que no se puede quitar lo de 'ios::out'. En este caso, necesitamos
indicarlo (nuevamente) porque por defecto se abre un fichero en modo texto.
El constructor ya agrega 'ios::out' por defecto, pero como tenemos que
indicar 'ios::binary', tenemos que indicar lo de 'ios::out' también.

Aunque puedas indicar 'ios::in', no funcionarán las funciones miembro de
lectura, porque 'ofstream' deriva de 'ostream', y ésta de 'ios'. Esto
significa que 'ofstream' sólo ofrece las funciones de salida y de
escritura, aunque se pueda acceder a otras funciones miembro de 'ios' que
representa los aspectos básicos de entrada y de salida. En otras palabras,
no puedes hacer esto:

char strCad[10];

ofsDatos.read( strCad, 10 );

ya que 'ofsDatos' es de la clase 'ofstream' y ésta no ofrece la función
miembro 'read()', ni tampoco aparece en sus clases derivadas: 'ostream' ni
'ios'.


Espero haber aclarado la duda.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120126/27f4f926/attachment.html>


Más información sobre la lista de distribución Cconclase