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 | - |
스트림이 사용할 버퍼에 대한 포인터. 널 포인터가 제공되면 버퍼링이 해제됩니다. 널이 아닌 경우 최소
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
|
|