std:: wcstombs
|
헤더 파일에 정의됨
<cstdlib>
|
||
|
std::
size_t
wcstombs
(
char
*
dst,
const
wchar_t
*
src,
std::
size_t
len
)
;
|
||
src 가 가리키는 첫 번째 요소부터 시작하는 와이드 문자 배열의 시퀀스를 초기 변환 상태에서 시작하는 좁은 멀티바이트 표현으로 변환합니다. 변환된 문자들은 dst 가 가리키는 char 배열의 연속적인 요소들에 저장됩니다. 최대 len 바이트까지 대상 배열에 기록됩니다.
각 문자는 std::wctomb 호출처럼 변환되지만, wctomb의 변환 상태는 영향을 받지 않습니다. 다음과 같은 경우 변환이 중지됩니다:
- 널 문자(null character)가 변환되어 저장되었습니다.
- 현재 C 로케일에서 유효한 문자에 해당하지 않는 wchar_t 가 발견되었습니다.
- 저장될 다음 멀티바이트 문자가 len 을 초과할 것입니다.
목차 |
참고 사항
대부분의 구현에서, 이 함수는 문자열을 처리하면서 std::mbstate_t 타입의 전역 정적 객체를 갱신하므로, 두 스레드에서 동시에 호출할 수 없습니다. 이러한 경우에는 std:: wcsrtombs 를 사용해야 합니다.
POSIX는 공통 확장을 명시합니다: 만약 dst 가 널 포인터인 경우, 이 함수는 변환되었을 때 dst 에 기록될 바이트 수를 반환합니다. 유사한 동작이 std:: wcsrtombs 에 대해 표준입니다.
매개변수
| dst | - | 멀티바이트 문자가 저장될 좁은 문자 배열에 대한 포인터 |
| src | - | 변환할 null로 종료되는 와이드 문자열의 첫 번째 요소에 대한 포인터 |
| len | - | dst가 가리키는 배열에서 사용 가능한 바이트 수 |
반환값
성공 시, dst 가 가리키는 첫 번째 요소를 갖는 문자 배열에 기록된 바이트 수(시프트 시퀀스를 포함하지만 종결 ' \0 ' 는 제외)를 반환합니다.
변환 오류 시(유효하지 않은 와이드 문자를 만난 경우), static_cast < std:: size_t > ( - 1 ) 를 반환합니다.
예제
#include <clocale> #include <cstdlib> #include <iostream> 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ß水𝄋" char mbstr[11]; std::wcstombs(mbstr, wstr, 11); std::cout << "multibyte string: " << mbstr << '\n'; }
출력:
multibyte string: zß水𝄋
참고 항목
|
와이드 문자열을 내부 상태를 고려하여 좁은 멀티바이트 문자 문자열로 변환
(함수) |
|
|
좁은 멀티바이트 문자 문자열을 와이드 문자열로 변환
(함수) |
|
|
[virtual]
|
InternT
에서
ExternT
로 문자열을 변환 (예: 파일에 쓸 때)
(
std::codecvt<InternT,ExternT,StateT>
의 가상 protected 멤버 함수)
|
|
C documentation
for
wcstombs
|
|