728x90
반응형
streambuf
basic_streambuf의 일반적인 사용을 위한 typedef이다.
typedef basic_streambuf streambuf;
유 형
이 름 | 설 명 |
const_buffers_type | 입력 시퀀스를 버퍼 목록으로 나타내는 데 사용되는 유형이다. |
mutable_buffers_type | 출력 시퀀스를 버퍼 목록으로 나타내는 데 사용되는 유형이다. |
멤버 함수
이 름 | 설 명 |
basic_streambuf [constructor] |
basic_streambuf 개체를 생성한다. |
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 클래스의 공용 인터페이스는 다음 구현 전략을 수용하기 위한 것이다:
- 단일 연속 문자 배열, 문자 시퀀스의 크기 변경을 수용하기 위해 필요에 따라 재할당 된다. 이는 현재 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/streambuf.hpp
편의 헤더: boost/asio.hpp
Boost.Asio 홈
728x90
반응형
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 색인 - time_traits< boost::posix_time::ptime >::subtract (0) | 2021.03.05 |
---|---|
Boost.Asio 색인 - generic::stream_protocol::stream_protocol (0) | 2021.03.05 |
Boost.Asio 색인 - ssl::stream::stream (0) | 2021.03.05 |
Boost.Asio 색인 - strand::strand (0) | 2021.03.05 |
Boost.Asio 색인 - io_context::strand::strand (0) | 2021.03.05 |