C++ IOS::rdbuf() 函式



C++ 的std::ios::rdbuf()函式用於獲取或設定與輸入/輸出流關聯的基礎流緩衝區。呼叫此函式時,它返回指向流的流緩衝區的指標,允許對流緩衝區進行低階操作。

語法

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

streambuf* rdbuf() const;
streambuf* rdbuf (streambuf* sb);

引數

  • sb − 它表示指向 streambuf 物件的指標。

返回值

此函式返回呼叫之前與流關聯的流緩衝區物件的指標。

異常

如果丟擲異常,則流處於有效狀態。如果 sb 是空指標並且成員異常被設定為針對 badbit 丟擲異常,則它會丟擲成員型別 failure 的異常。

資料競爭

訪問或修改流物件。

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

示例

讓我們來看下面的例子,我們將交換兩個流之間的緩衝區。

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream a, b;
    a << "TutorialsPoint";
    b << "Welcome";
    std::swap(*a.rdbuf(), *b.rdbuf());
    std::cout << "a Now Contains: " << a.str() << std::endl;
    std::cout << "b Now Contains: " << b.str() << std::endl;
    return 0;
}

輸出

以上程式碼的輸出如下:

a Now Contains: Welcome
b Now Contains: TutorialsPoint

示例

考慮以下示例,我們將重定向 cin 以從 std::istringstream 物件讀取。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream a("12 2 334");
    int x,y,z;
    std::cin.rdbuf(a.rdbuf());
    std::cin >> x >> y >> z;
    std::cout << "Result : " << x << " " << y << " " << z << std::endl;
    std::cin.rdbuf(std::cin.rdbuf());
    return 0;
}

輸出

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

Result : 12 2 334
ios.htm
廣告
© . All rights reserved.