write open good example ejemplo c++ ofstream

c++ - good - ofstream open



¿Por qué `is_open()` no es constante? (3)

De hecho es const en C ++ 11. La versión C ++ 03 es un error desafortunado.

Tengo una función similar a la de abajo, que es constante y necesita verificar que una secuencia de archivos esté abierta antes de continuar:

bool MyClass::checkSomeStuff() const { // Where outputFile_ is a std::ofstream if ( ! outputFile_.is_open() ) { throw std::runtime_error( "Output file not open." ); } // ... do more stuff

Sin embargo, parece que no puedo hacer esto ya que is_open() se declara como:

bool is_open ( );

(es decir, no constantes)

A mí me parece un poco extraño que una función como esta, que es claramente un acceso puro, no sea una constante. ¿Hay una lógica detrás de esto que tenga sentido?



  • Veamos en CPPReference, que es is_open() para:

La secuencia se asocia con un archivo si una llamada previa a un miembro abierto tuvo éxito o si el objeto se construyó con éxito usando el constructor parametrizado, y desde entonces no se ha llamado a cerrar.

Por lo tanto, úselo inmediatamente después de open() / close() . Es por eso que el antiguo is_open() non-const. ;)

  • Use bool good() const lugar.