ios :: setstate实际需要多少个参数?

时间:2012-02-22 00:23:08

标签: c++ istream setstate

我在函数ios::setstate( iostate state )中看到的每个定义都表明,当我使用以下函数编译程序时,该函数还需要 ONE ONLY ONE 参数打电话,一切都编译并运行得很好:

mystream.setstate( std::ios_base::badbit, true );

第二个参数究竟是什么?为什么没有关于它的文档?

编辑:我正在使用最新版本的Microsoft Visual Studio 2010的命令行编译器。

1 个答案:

答案 0 :(得分:1)

正如您所指出的那样,需要接受单个参数,但实现 允许通过具有默认值的参数(第17.6.5.5节)扩展成员函数。换句话说,只要这有效:

mystream.setstate( std::ios_base::badbit );

您的编译器符合要求。但是,没有任何东西说你的代码必须工作。

(你的库实现已经决定了一个布尔参数是有用的。你从来没有注意到它,因为它有一个默认值,但你仍然可以进入特定于实现的领域并自己提供参数。无论这个是否一个好主意显然是另一个问题,但可能不是。)