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
廣告