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_streambufのpublicメンバ関数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