std::basic_streambuf<CharT,Traits>:: pubsetbuf, std::basic_streambuf<CharT,Traits>:: setbuf
From cppreference.net
<
cpp
|
io
|
basic streambuf
|
public
:
basic_streambuf < CharT, Traits > * pubsetbuf ( char_type * s, std:: streamsize n ) |
(1) | |
|
protected
:
virtual basic_streambuf < CharT, Traits > * setbuf ( char_type * s, std:: streamsize n ) |
(2) | |
1)
가장 파생된 클래스의
setbuf
(
s, n
)
를 호출합니다.
2)
이 함수의 기본 클래스 버전은 아무런 효과가 없습니다. 파생 클래스들은 이 함수를 재정의하여 제어되는 문자 시퀀스(버퍼)를 사용자 제공 배열로 제거하거나 교체하거나, 기타 구현별 목적을 위해 사용할 수 있습니다.
목차 |
매개변수
| s | - |
사용자가 제공한 버퍼의 첫 번째
CharT
를 가리키는 포인터
|
| n | - |
사용자가 제공한 버퍼 내
CharT
요소의 개수
|
반환값
1)
setbuf
(
s, n
)
의 반환 값.
2)
this
예제
읽기를 위한 10k 버퍼를 제공합니다. Linux에서는 strace 유틸리티를 사용하여 실제로 읽은 바이트 수를 관찰할 수 있습니다.
이 코드 실행
#include <fstream> #include <iostream> #include <string> int main() { int cnt = 0; std::ifstream file; char buf[1024 * 10 + 1]; file.rdbuf()->pubsetbuf(buf, sizeof buf); file.open("/usr/share/dict/words"); for (std::string line; getline(file, line);) ++cnt; std::cout << cnt << '\n'; }
가능한 출력:
356010
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 158 | C++98 |
setbuf
의 기본 동작은
gptr() 이 null이 아니고 egptr() 과 같지 않은 경우에만 명시됨 |
모든 경우에 대해
no-op로 명시 |
참고 항목
|
[virtual]
|
제어되는 문자 시퀀스를 배열로 교체하려 시도합니다
(
std::basic_stringbuf<CharT,Traits,Allocator>
의
virtual protected 멤버 함수)
|
|
[virtual]
|
사용자 제공 버퍼를 설정하거나 이 filebuf를 비버퍼링으로 전환합니다
(
std::basic_filebuf<CharT,Traits>
의
virtual protected 멤버 함수)
|
|
[virtual]
|
제어되는 문자 시퀀스를 배열로 교체하려 시도합니다
(
std::strstreambuf
의
virtual protected 멤버 함수)
|
|
파일 스트림의 버퍼를 설정합니다
(함수) |