std::strstreambuf:: strstreambuf
From cppreference.net
<
cpp
|
io
|
strstreambuf
| (1) | ||
|
explicit
strstreambuf
(
std::
streamsize
alsize
=
0
)
;
|
(C++98에서 사용 중단됨)
(C++11 이전) |
|
|
strstreambuf
(
)
:
strstreambuf
(
0
)
{
}
explicit strstreambuf ( std:: streamsize alsize ) ; |
(C++11 이후) (C++26에서 제거됨) | |
|
strstreambuf
(
void
*
(
*
palloc
)
(
std::
size_t
)
,
void
(
*
pfree
)
(
void
*
)
)
;
|
(2) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
strstreambuf
(
char
*
gnext,
std::
streamsize
n,
char
*
pbeg
=
0
)
;
|
(3) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
strstreambuf
(
signed
char
*
gnext,
std::
streamsize
n,
signed
char
*
pbeg
=
0
)
;
|
(4) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
strstreambuf
(
unsigned
char
*
gnext,
std::
streamsize
n,
unsigned
char
*
pbeg
=
0
)
;
|
(5) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
strstreambuf
(
const
char
*
gnext,
std::
streamsize
n
)
;
|
(6) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
strstreambuf
(
const
signed
char
*
gnext,
std::
streamsize
n
)
;
|
(7) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
strstreambuf
(
const
unsigned
char
*
gnext,
std::
streamsize
n
)
;
|
(8) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
1)
std::strstreambuf
객체를 생성합니다: 기본 클래스를
std::streambuf
의 기본 생성자를 호출하여 초기화하고, 버퍼 상태를 "동적"으로 초기화합니다(버퍼는 필요에 따라 할당됨), 할당된 크기를 제공된
alsize
로 초기화하며, 할당 및 해제 함수를 null로 초기화합니다(
new
[
]
와
delete
[
]
를 사용함).
2)
std::strstreambuf
객체를 생성합니다: 기본 클래스를
std::streambuf
의 기본 생성자를 호출하여 초기화하고, 버퍼 상태를 "동적"으로 초기화합니다(버퍼는 필요에 따라 할당됨). 할당된 크기는 지정되지 않은 값으로 초기화하며, 할당 함수는
palloc
으로, 해제 함수는
pfree
으로 초기화합니다.
3-5)
다음 단계들로
std::strstreambuf
객체를 생성합니다:
a)
기본 클래스를
std::streambuf
의 기본 생성자를 호출하여 초기화합니다.
b)
버퍼 상태를 "constant"로 초기화합니다(버퍼는 사용자가 제공한 고정 크기 버퍼입니다).
c)
사용자 제공 배열의 요소 수를 다음과 같이 결정합니다:
n
이 0보다 크면
n
이 사용됩니다.
n
이 0이면
std::
strlen
(
gnext
)
가 실행되어 버퍼 크기를 결정합니다.
n
이 음수이면
INT_MAX
가 사용됩니다.
d)
다음과 같이
std::basic_streambuf
포인터들을 설정합니다:
pbeg
가 널 포인터인 경우
setg
(
gnext, gnext, gnext
+
N
)
를 호출합니다.
pbeg
가 널 포인터가 아닌 경우
setg
(
gnext, gnext, pbeg
)
와
setp
(
pbeg, pbeg
+
N
)
를 실행합니다. 여기서 N은 앞서 결정된 배열의 요소 수입니다.
6-8)
strstreambuf
(
(
char
*
)
gnext, n
)
와 동일하지만, 버퍼 상태 비트마스크에 "상수" 비트가 설정됩니다(이 버퍼로의 출력은 허용되지 않음).
목차 |
매개변수
| alsize | - | 동적으로 할당된 버퍼의 초기 크기 |
| palloc | - | 사용자가 제공한 할당 함수에 대한 포인터 |
| pfree | - | 사용자가 제공한 해제 함수에 대한 포인터 |
| gnext | - | 사용자가 제공한 배열 내 get 영역의 시작 포인터 |
| pbeg | - | 사용자가 제공한 배열 내 put 영역의 시작 포인터 |
| n | - | 사용자가 제공한 배열의 get 영역(pbeg가 null인 경우) 또는 put 영역(pbeg가 null이 아닌 경우) 내 바이트 수 |
참고 사항
이러한 생성자는 일반적으로 std:: strstream 의 생성자에 의해 호출됩니다.
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| P0935R0 | C++11 | default constructor was explicit | made implicit |
예제
이 코드 실행
#include <iostream> #include <strstream> int main() { std::strstreambuf dyn; // 동적 std::strstream dyn_s; // 동등한 스트림 dyn_s << 1.23 << std::ends; std::cout << dyn_s.str() << '\n'; dyn_s.freeze(false); char buf[10]; std::strstreambuf user(buf, 10, buf); // 사용자 제공 출력 버퍼 std::ostrstream user_s(buf, 10); // 동등한 스트림 user_s << 1.23 << std::ends; std::cout << buf << '\n'; std::strstreambuf lit("1 2 3", 5); // 상수 std::istrstream lit_s("1 2 3"); // 동등한 스트림 int i, j, k; lit_s >> i >> j >> k; std::cout << i << ' ' << j << ' ' << k << '\n'; }
출력:
1.23 1.23 1 2 3
참고 항목
strstream
객체를 생성하며, 필요시 버퍼를 할당합니다
(
std::strstream
의
public member function)
|