C++ IOS::init() 函数



C++ 的std::ios::init()函数用于初始化输入/输出流对象的内部状态。它由流构造函数和赋值运算符调用,以设置流缓冲区和错误状态。它确保在对流执行任何操作之前,流处于可用的状态。

对于标准用例,不需要 init() 函数,因为流由 C++ 库自动初始化。

内部状态的初始化方式使得每个成员函数返回以下值:

成员函数 返回值
rdbuf sb
tie 0
rdstate 如果sb不是空指针,则为goodbit,否则为badbit
exceptions goodbit
flags skipws | dec
width 0
precision 6
fill ' ' (空格)
getloc locale() 的副本

语法

以下是 std::ios::init() 函数的语法。

protected:void init (streambuf* sb);

参数

  • sb - 指向 streambuf 对象的指针。

返回值

此函数不返回任何值。

异常

如果抛出异常,则流处于有效状态。

数据竞争

修改流对象。sb 指向的对象可能会被访问和/或修改。

对同一流对象或流缓冲区的并发访问可能会导致数据竞争。

示例

在下面的示例中,我们将考虑 init() 函数的基本用法。

#include <iostream>
int main()
{
    std::ostream a(nullptr);
    a.setstate(std::ios::failbit);
    std::cout << "TutorialsPoint." << std::endl;
    return 0;
}

输出

以上代码的输出如下:

TutorialsPoint.
ios.htm
广告