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;
}