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