- fstream[meta header]
- std[meta namespace]
- basic_filebuf[meta class]
- function[meta id-type]
protected:
virtual basic_streambuf<CharT, Traits>*
setbuf(char_type* s, streamsize n); // (1) C++98
basic_streambuf<CharT, Traits>*
setbuf(char_type* s, streamsize n) override; // (1) C++17- basic_streambuf[link /reference/streambuf/basic_streambuf.md]
- streamsize[link /reference/ios/type-streamsize.md]
バッファ領域を与える。
このメンバ関数は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;
}- std::filebuf[link /reference/fstream/basic_filebuf.md]
- buf.pubsetbuf[link /reference/streambuf/basic_streambuf/pubsetbuf.md]
- buf.open[link open.md]
- in.open[link open.md]
- buf.sputn[link /reference/streambuf/basic_streambuf/sputn.md]
- in.sbumpc()[link /reference/streambuf/basic_streambuf/sbumpc.md]
H
- C++98