我可以问iostream它是否可写吗?

Can I ask an iostream if it is writeable?

本文关键字:是否 iostream 我可以      更新时间:2023-10-16

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

在查看了IOS, iostream, ostream的所有成员后,我没有看到任何方法可以检索使用的openmode标志。我猜你必须尝试写一些东西给你的引用,并捕捉它抛出的任何错误。或者根据如何设置,检查bad()的结果。

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

…的

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