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를 수행해요. CharTchar가 아니면 대부분의 구현은 파일에 멀티바이트 문자를 저장하고 std::codecvt 패싯으로 wide/멀티바이트 변환을 수행해요.

공통 문자 타입 typedef

  • std::filebufstd::basic_filebuf<char>
  • std::wfilebufstd::basic_filebuf<wchar_t>

멤버 타입

  • char_typeCharT
  • traits_typeTraits
  • int_typeTraits::int_type
  • pos_typeTraits::pos_type
  • off_typeTraits::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();
    }
}

더 알아보기 (Learn more)

cppreference