Cpp-standard-library-cpp-ios-rdbuf

提供:Dev Guides
移動先:案内検索

C ++ IOSライブラリ-rdbuf

説明

ストリームバッファの取得/設定に使用されます。 sbがNULLポインターの場合、関数はbadbitエラー状態フラグを自動的に設定します(メンバー例外がbadbitに渡された場合、例外をスローする可能性があります)。

一部の派生ストリームクラス(stringstreamやfstreamなど)は、構築時に関連付けられる独自の内部ストリームバッファーを保持します。 関連するストリームバッファを変更するためにこの関数を呼び出しても、その内部ストリームバッファに影響はありません。ストリームには、内部ストリームバッファとは異なる関連ストリームバッファがあります(ストリームの入出力操作では常に関連ストリームバッファが使用されますが、このメンバー関数によって返されるように)。

宣言

以下は、ios
rdbuf関数の宣言です。
get (1) streambuf* rdbuf() const;
set (2) streambuf* rdbuf (streambuf* sb);

最初の形式(1)は、現在ストリームに関連付けられているストリームバッファオブジェクトへのポインタを返します。

2番目の形式(2)も、sbが指すオブジェクトをストリームに関連付けられたストリームバッファーとして設定し、エラー状態フラグをクリアします。

パラメーター

*sb* -streambufオブジェクトへのポインター。

戻り値

呼び出し前のストリームに関連付けられたストリームバッファオブジェクトへのポインタ。

例外

基本保証-例外がスローされた場合、ストリームは有効な状態です。 sbがNULLポインターであり、メンバー例外がbadbitに対してスローするように設定されている場合、メンバータイプエラーの例外をスローします。

データの競合

ストリームオブジェクトにアクセス(1)または変更(2)します。

同じストリームオブジェクトへの同時アクセスは、データの競合を引き起こす可能性があります。

以下の例では、ios
rdbuf関数について説明しています。
#include <iostream>
#include <fstream>

int main () {
   std::streambuf *psbuf, *backup;
   std::ofstream filestr;
   filestr.open ("test.txt");

   backup = std::cout.rdbuf();

   psbuf = filestr.rdbuf();
   std::cout.rdbuf(psbuf);

   std::cout << "This is written to the file";

   std::cout.rdbuf(backup);

   filestr.close();

   return 0;
}