std::strstream:: strstream
From cppreference.net
|
strstream
(
)
;
|
(1) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
strstream
(
char
*
s,
int
n,
std::
ios_base
::
openmode
mode
=
std:: ios_base :: in | std:: ios_base :: out ) ; |
(2) |
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
새로운 입력/출력 strstream과 그 기반이 되는 std::strstreambuf 를 생성합니다.
1)
기본 생성자로 내부
std::strstreambuf
를 생성하며, 이는 동적으로 증가하는 버퍼를 만들고, strstreambuf 멤버의 주소로 기본 클래스를 초기화합니다.
2)
기본 클래스를 기본
std::strstreambuf
멤버의 주소로 초기화했습니다. 이 멤버는 사용자가 제공한 고정 크기 배열을 사용하는 두 가지 가능한 방식 중 하나로 초기화됩니다:
a)
만약
(
mode
&
app
)
==
0
(
app
비트가
mode
에 설정되지 않은 경우),
strstreambuf
(
s, n, s
)
를 호출하여 버퍼를 구성합니다.
s
가 가리키는 첫 번째 요소를 가진 배열에
n
개 미만의 요소가 있는 경우 동작은 정의되지 않습니다.
b)
만약
(
mode
&
app
)
!
=
0
(
mode
에서
app
비트가 설정된 경우),
strstreambuf
(
s, n, s
+
std::
strlen
(
s
)
)
를 호출하여 버퍼를 구성합니다.
s
가 가리키는 첫 번째 요소를 갖는 배열에
n
개 미만의 요소가 있거나 배열이 유효한 null-terminated 문자 시퀀스를 포함하지 않는 경우 동작은 정의되지 않습니다.
목차 |
매개변수
| s | - | char 출력 버퍼로 사용할 배열 | ||||||||||||||||
| n | - | 출력에 사용할 배열의 크기 | ||||||||||||||||
| mode | - |
스트림 열기 모드를 지정합니다. 비트마스크 타입이며, 다음 상수들이 정의되어 있습니다
(
app
만 사용됨):
|
예제
이 코드 실행
#include <iostream> #include <string> #include <strstream> int main() { // 동적 버퍼 std::strstream s1; s1 << 1 << ' ' << 3.14 << " example" << std::ends; std::cout << "Buffer holds: '" << s1.str() << "'\n"; s1.freeze(false); int n; double d; std::string w; s1 >> n >> d >> w; std::cout << "Read back: n = " << n << ", d = " << d << ", w = '" << w << "'\n"; // 정적 버퍼 char arr[20] = "-1 -3.14 "; std::strstream s2(arr, sizeof arr, std::ios_base::app); s2 << "another" << std::ends; std::cout << "Buffer holds: '" << s2.str() << "'\n"; s2 >> n >> d >> w; std::cout << "Read back: n = " << n << ", d = " << d << ", w = '" << w << "'\n"; }
출력:
Buffer holds: '1 3.14 example' Read back: n = 1, d = 3.14, w = 'example' Buffer holds: '-1 -3.14 another' Read back: n = -1, d = -3.14, w = 'another'
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 115 | C++98 |
오버로드 (2)는 다음 경우만 고려함
mode & app == 0 (
==
의 우선순위가
&
보다 높음)
|
다음 경우들을 고려함
(
mode
&
app
)
==
0
및 ( mode & app ) ! = 0 |
참고 항목
strstreambuf
객체를 생성합니다
(
std::strstreambuf
의 public 멤버 함수)
|
|
istrstream
객체를 생성합니다 (선택적으로 버퍼를 할당합니다)
(
std::istrstream
의 public 멤버 함수)
|
|
ostrstream
객체를 생성합니다 (선택적으로 버퍼를 할당합니다)
(
std::ostrstream
의 public 멤버 함수)
|