std:: setbuf
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ヘッダーで定義
<cstdio>
|
||
|
void
setbuf
(
std::
FILE
*
stream,
char
*
buffer
)
;
|
||
Cストリーム stream に対して実行されるI/O操作に使用する内部バッファを設定します。
buffer が null でない場合、 std:: setvbuf ( stream, buffer, _IOFBF , BUFSIZ ) と等価です。
buffer が null の場合、 std:: setvbuf ( stream, nullptr, _IONBF , 0 ) と同等であり、バッファリングを無効にします。
目次 |
パラメータ
| stream | - | バッファを設定するファイルストリーム |
| buffer | - |
ストリームが使用するバッファへのポインタ。nullポインタが指定された場合、バッファリングは無効になります。nullでない場合、少なくとも
BUFSIZ
文字を保持できる必要があります
|
戻り値
(なし)
注記
BUFSIZ が適切なバッファサイズでない場合、 std::setvbuf を使用して変更することができます。
std::setvbuf
はエラーの検出にも使用すべきです。なぜなら
std::setbuf
は成功または失敗を示さないためです。
この関数は、
stream
がオープンされたファイルに関連付けられた後、かつ他の操作(
std::setbuf
または
std::setvbuf
の失敗した呼び出しを除く)が行われる前にのみ使用できます。
よくある間違いは、 stdin または stdout のバッファを、プログラム終了前に寿命が切れる配列に設定することです:
int main() { char buf[BUFSIZ]; std::setbuf(stdin, buf); } // bufの寿命が終了、未定義動作
例
std::setbuf
は、即時出力が必要なストリームのバッファリングを無効化するために使用できます。
#include <chrono> #include <cstdio> #include <thread> int main() { using namespace std::chrono_literals; std::setbuf(stdout, nullptr); // unbuffered stdout std::putchar('a'); // appears immediately on unbuffered stream std::this_thread::sleep_for(1s); std::putchar('b'); }
出力:
ab
関連項目
|
ファイルストリームのバッファとそのサイズを設定する
(関数) |
|
|
Cドキュメント
for
setbuf
|
|