Есть ли способ проверить, открыт ли istream в двоичном режиме?
Я использую istream, который может быть строковым, ifstream или определенным пользователем типом потока, и мне нужно знать, если в случае ifstream он не был открыт в двоичном режиме (поэтому я могу сделать исключение). Я пробовал следующий метод:
if ((_is.flags() & ios::binary) == 0)
throw exception(...)
но исключение никогда не возникает. В этом случае тест завершился неудачно, потому что _is.flags() возвращает 0x201, а ios:: binary - 0x20. Есть ли способ узнать, открыт ли поток в текстовом режиме?
Ответы
Ответ 1
flags() возвращает ios_base:: fmtflags, который является форматированием флагов, тогда как двоичный код ios_base:: openmode. Я не уверен, есть ли способ найти их, как только поток уже открыт. Я думал, что, возможно, был виртуальный член класса streambuf, который мог бы помочь, но на самом деле это не похоже.
Ответ 2
Нет, нет возможности проверить это.