有没有办法检查istream是否以二进制模式打开
Is there a way to check if an istream was opened in binary mode?
我使用的istream可以是字符串流、ifstream或用户定义的流类型,我需要知道在ifstream的情况下,它是否没有以二进制模式打开(所以我可以抛出异常)。我尝试了以下方法:
if ((_is.flags() & ios::binary) == 0)
throw exception(...)
但从来没有例外。在这种情况下,测试失败,因为_is.flags()返回0x201,ios:binary为0x20。有没有办法查明流是否以文本模式打开?
flags()返回ios_base::fmtflags,它是格式化标志,而binary是ios_base::openmode标志。我不确定一旦流已经打开,是否有办法找到这些。我在想,streambuf类中可能有一个虚拟成员可以提供帮助,但实际上似乎没有。
不,没有办法对此进行测试。
相关文章:
- C++二进制模式下写入和读取文件
- 二进制模式 + 格式化文本操作或文本模式 + 二进制数据操作 - 有意义吗?
- 我无法使用C ++以二进制模式保存数据
- std::ifstream 在二进制模式下,语言环境在 C++ 中
- 如何仅使用 std::filebuf 将数据(二进制模式)写入文件
- 为什么FWRITE在二进制模式下会慢得多
- 为什么使用char数组来存储以二进制模式打开的文件的内容
- C++文件二进制模式副本
- 使用二进制模式将数据结构写入文件
- 以二进制模式写入文件不起作用
- 如何在二进制模式下将 NULL 写入文件
- 使用本地二进制模式进行对象跟踪:更改检测ROI的大小
- 如何使用c++在二进制模式下将矢量写入文件
- 如何存储在二进制模式C++中读取的文件中的数据
- 找到与另一个二进制模式匹配的所有 2 位值,然后对它们求和
- 在二进制模式下使用格式化的IO操作
- 以二进制模式打印到STL(立体光刻)文件
- 为什么ofstream不在linux上以二进制模式编写utf16
- 以二进制模式扫描文件,并将十六进制字符解释为C++中的实际数字
- Fread()二进制模式在c++中不能正常工作