最終更新日時: 2023年07月05日 01時35分47秒 (JST)
Shunsuke Shimizu が更新

履歴 編集

function
<ios>

# std::basic_ios::rdbuf

    basic_streambuf<CharT, Traits>* rdbuf() const;                                  // (1)

    basic_streambuf<CharT, Traits>* rdbuf(basic_streambuf<CharT, Traits>* sb);      // (2)

## 概要

ストリームバッファオブジェクトを取得・設定する。

## 効果

- (1) -
- (2) `*this` に紐づくストリームバッファ（`basic_streambuf`）オブジェクトを引数 `sb` に設定する（`rdbuf() == sb` となる）。
  その後、`clear()` を実行する（結果として、`sb == nullptr`、かつ、`(exceptions() & ios_base::badbit) != 0` の場合、`ios_base::failure` 例外が送出される）。

## 戻り値

- (1) `*this` に紐づいているストリームバッファ（`basic_streambuf`）オブジェクトへのポインタ
- (2) 引数 `sb` が設定される前の `rdbuf()`

## 例

    #include <iostream>
    #include <sstream>

    int main()
    {
      std::cout << "1st message" << std::endl;
      std::ostringstream sstr;
      std::streambuf* buf = std::cout.rdbuf(sstr.rdbuf());
      std::cout << "2nd message" << std::endl;
      std::cout.rdbuf(buf);
      std::cout << "3rd message" << std::endl;
      std::cout << sstr.str();
    }

### 出力

    1st message
    3rd message
    2nd message

## バージョン

### 言語

- C++98

## 参照

- `set_rdbuf`