Existe uma maneira de verificar se um istream foi aberto no modo binário?
-
03-07-2019 - |
Pergunta
Eu estou usando um istream que poderia ser stringstream, ifstream ou um tipo de fluxo definida pelo usuário e eu preciso saber se, no caso de uma ifstream, não foi aberto no modo binário (para que eu possa lançar uma exceção ). Eu tentei o seguinte método:
if ((_is.flags() & ios::binary) == 0)
throw exception(...)
, mas nenhuma exceção é sempre acionada. O teste falhar neste caso, porque _is.flags () retorna 0x201 e ios :: binary é 0x20. Existe uma maneira de descobrir se um fluxo foi aberto em modo texto?
Solução
bandeiras () retorna ios_base :: fmtflags que está formatando bandeiras , enquanto binário é uma href="http://www.cplusplus.com/reference/iostream/ios_base/openmode.html" rel="noreferrer"> ios_base :: openmode bandeira
Outras dicas
Não, não há nenhuma maneira de testar isso.