Hola Miguel,<br><br><div class="gmail_quote">2012/1/26 Oso Impávido <span dir="ltr"><<a href="mailto:mcubides@gmail.com">mcubides@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Buenos días,<div><br></div><div>Viendo la respuesta de Steven me surge una duda, él sugiere usar:</div><div class="im"><div><br></div><div><span>ofstream ofsDatos( "datos.dat", ios::out | ios::binary );</span> </div>
<div><br>

</div></div><div>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 
<span>ofstream ofsDatos( "datos.dat", ios::out | ios::in | ios::binary ); tal y como si se trabajara con un fstream?).</span></div><div><font color="#222222" face="arial, sans-serif"><br></font></div></blockquote>
<div><br></div><div>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.</div>
<div><br></div><div>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:<br>
<br>char strCad[10];<br><br>ofsDatos.read( strCad, 10 );</div><div><br></div><div>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'.</div>
<div><br></div><div><br></div><div>Espero haber aclarado la duda.</div><div><br></div><div>Steven</div><div> </div></div>