std:: wcsrtombs
|
헤더 파일에 정의됨
<cwchar>
|
||
|
std::
size_t
wcsrtombs
(
char
*
dst,
const
wchar_t
**
src,
|
||
* src 가 가리키는 첫 번째 요소부터 시작하는 배열의 와이드 문자 시퀀스를, * ps 로 기술된 변환 상태에서 시작하는 좁은 멀티바이트 표현으로 변환합니다. dst 가 null이 아닌 경우, 변환된 문자들은 dst 가 가리키는 char 배열의 연속된 요소들에 저장됩니다. 최대 len 바이트까지 대상 배열에 기록됩니다.
각 문자는 마치 std::wcrtomb 호출처럼 변환됩니다. 변환은 다음과 같은 경우 중단됩니다:
- 널 문자(null character)가 변환되어 저장되었습니다. src 는 널 포인터(null pointer)로 설정되고 * ps 는 초기 시프트 상태(initial shift state)를 나타냅니다.
- 현재 C 로케일(locale)에서 유효한 문자에 해당하지 않는 wchar_t 가 발견되었습니다. src 는 변환되지 않은 첫 번째 와이드 문자(wide character)를 가리키도록 설정됩니다.
- 저장될 다음 멀티바이트 문자(multibyte character)가 len 를 초과할 경우입니다. src 는 변환되지 않은 첫 번째 와이드 문자(wide character)를 가리키도록 설정됩니다. 이 조건은 dst 가 널 포인터(null pointer)인 경우에는 검사되지 않습니다.
목차 |
매개변수
| dst | - | 멀티바이트 문자가 저장될 좁은 문자 배열에 대한 포인터 |
| src | - | 널 종료 와이드 문자열의 첫 번째 요소에 대한 포인터의 포인터 |
| len | - | dst가 가리키는 배열에서 사용 가능한 바이트 수 |
| ps | - | 변환 상태 객체에 대한 포인터 |
반환값
성공 시, dst 가 가리키는 첫 번째 요소를 시작으로 하는 문자 배열에 기록된 바이트 수(시프트 시퀀스를 포함하지만 종료 ' \0 ' 는 제외)를 반환합니다. dst 가 널 포인터인 경우, 기록되었을 바이트 수(역시 종료 널 문자 ' \0 ' 제외)를 반환합니다.
변환 오류 시(유효하지 않은 와이드 문자를 발견한 경우), static_cast < std:: size_t > ( - 1 ) 를 반환하며, EILSEQ 을 errno 에 저장하고, * ps 를 지정되지 않은 상태로 둡니다.
예제
#include <clocale> #include <cwchar> #include <iostream> #include <string> #include <vector> void print_wide(const wchar_t* wstr) { std::mbstate_t state = std::mbstate_t(); std::size_t len = 1 + std::wcsrtombs(nullptr, &wstr, 0, &state); std::vector<char> mbstr(len); std::wcsrtombs(&mbstr[0], &wstr, mbstr.size(), &state); std::cout << "multibyte string: " << &mbstr[0] << '\n' << "Length, including '\\0': " << mbstr.size() << '\n'; } int main() { std::setlocale(LC_ALL, "en_US.utf8"); // UTF-8 narrow multibyte encoding const wchar_t* wstr = L"z\u00df\u6c34\U0001d10b"; // or L"zß水𝄋" print_wide(wstr); }
출력:
multibyte string: zß水𝄋 Length, including '\0': 11
참고 항목
|
와이드 문자를 멀티바이트 표현으로 변환 (상태 정보 사용)
(함수) |
|
|
좁은 멀티바이트 문자열을 와이드 문자열로 변환 (상태 정보 사용)
(함수) |
|
|
[virtual]
|
InternT
에서
ExternT
로 문자열 변환 (예: 파일에 쓸 때)
(
std::codecvt<InternT,ExternT,StateT>
의 가상 protected 멤버 함수)
|
|
C documentation
for
wcsrtombs
|
|