tipos sirve que para manejo libreria lectura example escritura ejemplo datos binarios archivos c++ standard-library iostream

sirve - ofstream c++ example



¿Hay alguna forma de comprobar si se abrió un istream en modo binario? (2)

Estoy usando un istream que podría ser stringstream, ifstream o un tipo de flujo definido por el usuario y necesito saber si, en el caso de un ifstream, no se abrió en modo binario (para que pueda lanzar una excepción). He intentado el siguiente método:

if ((_is.flags() & ios::binary) == 0) throw exception(...)

pero nunca se arroja ninguna excepción. La prueba falla en este caso porque _is.flags () devuelve 0x201 y ios :: binary es 0x20. ¿Hay alguna forma de averiguar si se abrió una secuencia en modo texto?


flags () devuelve ios_base :: fmtflags que está formateando flags, mientras que binary es un indicador ios_base :: openmode . No estoy seguro de si hay alguna forma de descubrir esto una vez que la transmisión ya esté abierta. Estaba pensando que tal vez había un miembro virtual de la clase streambuf que podría ayudar, pero realmente no parece haberlo.


No, no hay forma de probar esto.