Подтвердить что ты не робот

Есть ли способ проверить, открыт ли istream в двоичном режиме?

Я использую istream, который может быть строковым, ifstream или определенным пользователем типом потока, и мне нужно знать, если в случае ifstream он не был открыт в двоичном режиме (поэтому я могу сделать исключение). Я пробовал следующий метод:

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

но исключение никогда не возникает. В этом случае тест завершился неудачно, потому что _is.flags() возвращает 0x201, а ios:: binary - 0x20. Есть ли способ узнать, открыт ли поток в текстовом режиме?

4b9b3361

Ответ 1

flags() возвращает ios_base:: fmtflags, который является форматированием флагов, тогда как двоичный код ios_base:: openmode. Я не уверен, есть ли способ найти их, как только поток уже открыт. Я думал, что, возможно, был виртуальный член класса streambuf, который мог бы помочь, но на самом деле это не похоже.

Ответ 2

Нет, нет возможности проверить это.