basic_streambuf_ref::const_buffers_type
입력 시퀀스를 버퍼 목록으로 나타내는 데 사용되는 유형이다.
typedef basic_streambuf< Allocator >::const_buffers_type const_buffers_type;
유형
이 름 | 설 명 |
const_buffer_type | 입력 시퀀스를 버퍼 목록으로 나타나는 데 사용되는 유형이다. |
mutable_buffer_type | 출력 시퀀스를 버퍼 목록으로 나타나는 데 사용되는 유형이다. |
멤버 함수
이 름 | 설 명 |
basic_streambuf [constructor] | basic_streambuf 개체를 생성하는 생성자(constructor)이다. |
capacity | basic_streambuf의 현재 용량을 가져온다. |
commit | 출력 시퀀스에서 입력 시퀀스로 문자를 이동한다. |
consume | 입력 시퀀스에서 문자를 제거한다. |
data | 입력 시퀀스를 나타내는 버퍼 목록을 가져온다. |
max_size | basic_streambuf의 최대 크기를 가져온다. |
prepare | 주어진 크기로 출력 시퀀스를 나타내는 버퍼 목록을 가져온다. |
size | 입력 시퀀스의 크기를 가져온다. |
보호되는(protected) 멤버 함수
이 름 | 설 명 |
overflow | std:: streambuf 동작을 재정의한다. |
reserve | |
underflow | std::streambuf 동작을 재정의한다. |
basic_streambuf 클래스는 std::streambuf에서 파생되어 streambuf의 입력/출력 시퀀스를 하나 이상의 문자 배열과 연결한다. 이러한 문자 배열은 basic_streambuf 개체의 내부에 있지만, 배열 요소에 대한 직접 접근이 제공되어 I/O 작업에 효율적으로 사용할 수 있다. basic_streambuf 개체의 출력 시퀀스에 쓰여진 문자는 동일한 개체의 입력 시퀀스에 추가된다.
basic_streambuf 클래스의 공개(public) 인터페이스는 다음과 같은 구현 전략을 허용하기 위한 것이다:
- 단일 연속 문자 배열(a single contiguous character array)은 문자 시퀀스의 크기 변경을 수용하기 위해 필요에 따라 재할당 한다. 이는 현재 Asio에서 사용되는 있는 구현 접근 방식이다.
- 하나 이상의 문자 배열 시퀀스로, 각 배열의 크기는 동일하다. 추가되는 문자 배열 개체는 문자 시퀀스의 크기 변경을 수용하기 위해 시퀀스에 추가된다.
- 다양한 크기의 하나 이상의 문자 배열 시퀀스이다. 추가되는 문자 배열 개체는 문자 시퀀스의 크기 변경을 수용하기 위해 시퀀스에 추가된다.
basic_streambuf의 생성자는 입력/출력 시퀀스 크기 합계의 최댓값을 지정하는 size_t 인수를 허용한다. basic_streambuf 개체의 수명이 유지되는 동안 , 다음과 같은 불변성이 유지된다:
size() <= max_size()
개체의 생성에 성공한다면, 불변성을 위반하게 만드는 모든 멤버 함수는 std::length_error 종류의 예외를 발생할 것이다.
basic_streambuf 생성자는 Allocator 인수를 가진다. 이 인수의 복사본은 각 basic_streambuf 개체가 수명이 유지되는 동안 생성자와 모든 멤버 함수가 사용하는 메모리 할당에 사용된다.
예제
streambuf에서 소켓에 직접 쓰기:
boost::asio::streambuf b; std::ostream os(&b); os << "Hello, World!\n"; // try sending some data in input sequence size_t n = sock.send(b.data()); b.consume(n); // sent data is removed from input sequence
소켓에서 streambuf로 직접 읽기:
boost::asio::streambuf b; // reserve 512 bytes in output sequence boost::asio::streambuf::mutable_buffers_type bufs = b.prepare(512); size_t n = sock.receive(bufs); // received data is "committed" from output sequence to input sequence b.commit(n); std::istream is(&b); std::string s; is >> s;
요구 사항
일반 헤더: boost/asio/basic_streambuf.hpp
편의 헤더: boost/asio.hpp
Boost.Asio 홈
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 색인 - dynamic_vector_buffer::const_buffers_type (0) | 2021.01.18 |
---|---|
Boost.Asio 색인 - dynamic_string_buffer::const_buffers_type (0) | 2021.01.18 |
Boost.Asio 색인 - basic_streambuf::const_buffers_type (0) | 2021.01.18 |
Boost.Asio 색인 - const_buffers_1::const_buffers_1 (0) | 2021.01.18 |
Boost.Asio 색인 - const_buffer::const_buffer (0) | 2021.01.16 |