当前位置:  开发笔记 > 编程语言 > 正文

有没有办法检查是否以二进制模式打开了一个istream?

如何解决《有没有办法检查是否以二进制模式打开了一个istream?》经验,为你挑选了2个好方法。

我正在使用istream,它可以是stringstream,ifstream或用户定义的流类型,我需要知道,如果是ifstream,它是不是以二进制模式打开(所以我可以抛出异常).我尝试了以下方法:

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

但是没有例外.在这种情况下测试失败,因为_is.flags()返回0x201而ios :: binary是0x20.有没有办法找出是否在文本模式下打开了流?



1> Greg Rogers..:

flags()返回ios_base :: fmtflags,它是格式化标志,而binary是ios_base :: openmode标志.一旦流已经打开,我不确定是否有办法找到这些.我在想,也许有一个streambuf类的虚拟成员可以提供帮助,但似乎并没有.



2> C. Broadbent..:

不,没有办法测试这个.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有