std::basic_filebuf
std::basic_filebuf (파일 버퍼)
연관 문자 시퀀스가 파일인 std::basic_streambuf예요. 입력·출력 시퀀스가 같은 파일에 연관되고, 두 연산에 공통 파일 위치가 유지돼요. std::FILE과 동일한 읽기·쓰기 제약을 가져요.
출처: cppreference
본문
<fstream> 헤더에 정의돼 있어요.
template<
class CharT,
class Traits = std::char_traits<CharT>
> class basic_filebuf : public std::basic_streambuf<CharT, Traits>;
std::basic_filebuf는 연관 문자 시퀀스가 파일인 std::basic_streambuf예요. 입력 시퀀스와 출력 시퀀스가 같은 파일에 연관되고, 두 연산에 공통 파일 위치가 유지돼요. std::basic_filebuf로 시퀀스를 읽고 쓰는 제약은 std::FILE과 같아요. underflow()와 overflow()/sync() 함수가 파일과 버퍼의 get·put 영역 사이의 실제 I/O를 수행해요. CharT가 char가 아니면 대부분의 구현은 파일에 멀티바이트 문자를 저장하고 std::codecvt 패싯으로 wide/멀티바이트 변환을 수행해요.
공통 문자 타입 typedef
std::filebuf—std::basic_filebuf<char>std::wfilebuf—std::basic_filebuf<wchar_t>
멤버 타입
char_type—CharTtraits_type—Traitsint_type—Traits::int_typepos_type—Traits::pos_typeoff_type—Traits::off_type
멤버 함수
- (constructor) — filebuf를 생성해요.
- (destructor) — 파괴하고 파일을 닫아요.
- open — 파일을 열어요.
- close — 파일을 닫아요.
- is_open — 파일이 열려 있는지 확인해요.
- seekoff / seekpos — 파일 위치를 조정해요.
- underflow / pbackfail / overflow — 버퍼 I/O를 수행해요.
- setbuf — 버퍼를 설정해요.
예제
#include <fstream>
#include <iostream>
int main()
{
std::filebuf fb;
if (fb.open("test.txt", std::ios::out))
{
std::ostream os(&fb);
os << "Hello, filebuf!\n";
fb.close();
}
}