C++ ios::unitbuf() 函式



C++ 的std::ios::unitbuf()函式是一個操縱器,用於設定流的單元緩衝模式。呼叫此函式時,流會在每次輸出操作後自動重新整理,確保資料立即寫入輸出裝置。

此函式在需要立即反饋的即時應用程式(例如日誌記錄或互動式使用者介面)中非常有用。

語法

以下是 std::ios::unitbuf() 函式的語法。

ios_base& unitbuf (ios_base& str);

引數

  • str − 指示其格式標誌受影響的流物件。

返回值

此函式返回引數 str。

異常

如果丟擲異常,則 str 處於有效狀態。

資料競爭

它修改 str。同時訪問同一個流物件可能會導致資料競爭。

示例

在下面的示例中,我們將考慮 unitbuf() 函式的基本用法。

#include <iostream>
int main()
{
    std::cout << std::unitbuf;
    std::cout << "Welcome, ";
    std::cout << "To Everyone.!" << std::endl;
    std::cout << std::nounitbuf;
    return 0;
}

輸出

上述程式碼的輸出如下:

Welcome, To Everyone.!

示例

讓我們來看下面的例子,其中 unitbuf() 導致每次輸出都被重新整理,確保每個計數器值都按預期每秒出現在螢幕上。

#include <iostream>
#include <chrono>
#include <thread>
int main()
{
    std::cout << std::unitbuf;
    for (int x = 1; x < 4; ++x) {
        std::cout << "Count: " << x << std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    std::cout << std::nounitbuf;
    return 0;
}

輸出

以下是上述程式碼的輸出:

Count: 1
Count: 2
Count: 3
ios.htm
廣告