最終更新日時:
が更新

履歴 編集

function
<fstream>

std::basic_filebuf::setbuf

protected:
  virtual basic_streambuf<CharT, Traits>*
    setbuf(char_type* s, streamsize n);          // (1) C++03
  basic_streambuf<CharT, Traits>*
    setbuf(char_type* s, streamsize n) override; // (1) C++17

概要

バッファ領域を与える。

このメンバ関数はprotectedであり、std::basic_streambufpublicメンバ関数pubsetbuf()を通して間接的に呼び出される。

効果

そのストリームに対して入出力が行われる前にsetbuf(0, 0)が呼び出された場合、ストリームはバッファリングされない状態(unbuffered)になる。それ以外の場合の結果は処理系定義である。

「バッファリングされない」とは、pbase()pptr()が常にヌルポインタを返し、ファイルへの出力が可能な限り速やかに行われることを意味する。

戻り値

規格に規定はない。主要な処理系はthisを返す。

#include <iostream>
#include <fstream>

int main()
{
  std::filebuf buf;

  // 入出力を行う前に呼び出すことで、バッファリングを無効化する
  buf.pubsetbuf(nullptr, 0);

  buf.open("test.txt", std::ios_base::out);
  buf.sputn("Hello", 5);

  // バッファリングされていないため、この時点で既にファイルへ書き込まれている
  std::filebuf in;
  in.open("test.txt", std::ios_base::in);
  std::cout << static_cast<char>(in.sbumpc()) << std::endl;
}

出力

H

バージョン

言語

  • C++98

関連項目