我使用的istream可以是stream stream、ifstream或用户定义的流类型,我需要知道ifstream是否是以二进制模式打开的(所以我可以抛出一个异常)。我尝试过以下方法:
if ((_is.flags() & ios::binary) == 0)
throw exception(...)
但不会抛出任何异常。在这种情况下,测试失败,因为_is.flags()返回0x201,而ios::binary为0x20。有没有办法找出一个流是否是以文本模式打开的?
发布于 2008-10-22 02:23:23
ios_base::openmode ()返回格式化标志的ios_base::fmtflags,而binary是一个二进制标志。我不确定是否有办法在流已经打开后找出这些问题。我在想也许streambuf类中有一个虚拟成员可以提供帮助,但似乎没有。
发布于 2008-10-22 02:22:32
不,没有办法对此进行测试。
https://stackoverflow.com/questions/224234
复制相似问题