如果它是可写的,我可以问一个iostream吗?

时间:2011-08-16 11:54:13

标签: c++ iostream

在我的代码中,我传递了一个对iostream的引用,在这种情况下,它最终是一个文件 有没有办法找出,当它被打开时,它是否被设置为[in | out]而不仅仅是[in]?

3 个答案:

答案 0 :(得分:3)

在查看IOS,iostream,ostream的所有成员后,我没有看到任何方法来检索所使用的openmode标志。我想你必须尝试写一些东西给你的参考,并抓住它抛出的任何错误。或者根据它的设置方式,检查bad()的结果。

答案 1 :(得分:1)

openmode传递给std::streambuf,但没有方法可以检索它。知道文件是否为写操作打开的唯一方法是尝试编写和检查f.fail(),或者选择f.bad()(相当于f.rdstate() & std::fstream::badbit)。

答案 2 :(得分:-2)

......有点

if ( dynamic_cast<ostream*>( MyStreamPtr ) == 0 )
{
    // Not for output...
}