std:: mbstowcs
|
헤더 파일에 정의됨
<cstdlib>
|
||
|
std::
size_t
mbstowcs
(
wchar_t
*
dst,
const
char
*
src,
std::
size_t
len
)
;
|
||
src 가 가리키는 첫 번째 요소부터 시작하는 배열의 멀티바이트 문자 문자열을 와이드 문자 표현으로 변환합니다. 변환된 문자들은 dst 가 가리키는 배열의 연속된 요소들에 저장됩니다. 최대 len 개의 와이드 문자만 목적 배열에 기록됩니다.
각 문자는 std::mbtowc 호출처럼 변환되지만, mbtowc 변환 상태는 영향을 받지 않습니다. 변환은 다음과 같은 경우 중단됩니다:
- 멀티바이트 널 문자가 변환되어 저장되었습니다.
- 현재 C 로케일에서 유효하지 않은 멀티바이트 문자가 발견되었습니다.
- 저장될 다음 와이드 문자가 len 을 초과할 경우입니다.
목차 |
참고 사항
대부분의 구현에서, 이 함수는 문자열을 처리하면서 std::mbstate_t 타입의 전역 정적 객체를 갱신하므로, 두 스레드가 동시에 호출할 수 없습니다. 이러한 경우에는 std::mbsrtowcs 를 사용해야 합니다.
POSIX는 공통 확장을 명시합니다: 만약 dst 가 널 포인터인 경우, 이 함수는 변환되었을 경우 dst 에 기록될 와이드 문자 수를 반환합니다. 유사한 동작이 std::mbsrtowcs 에 대해 표준입니다.
매개변수
| dst | - | 와이드 문자열이 저장될 와이드 문자 배열에 대한 포인터 |
| src | - | 변환할 널 종료 멀티바이트 문자열의 첫 번째 요소에 대한 포인터 |
| len | - | dst가 가리키는 배열에서 사용 가능한 와이드 문자 수 |
반환값
성공 시, 대상 배열에 기록된 널 종료 문자 L ' \0 ' 를 제외한 와이드 문자 수를 반환합니다.
변환 오류 발생 시(유효하지 않은 멀티바이트 문자가 발견된 경우), static_cast < std:: size_t > ( - 1 ) 을 반환합니다.
예제
#include <clocale> #include <cstdlib> #include <iostream> int main() { std::setlocale(LC_ALL, "en_US.utf8"); std::wcout.imbue(std::locale("en_US.utf8")); const char* mbstr = "z\u00df\u6c34\U0001f34c"; // or u8"zß水🍌" // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c"; wchar_t wstr[5]; std::mbstowcs(wstr, mbstr, 5); std::wcout << "wide string: " << wstr << '\n'; }
출력:
wide string: zß水🍌
참고 항목
|
상태를 고려하여 좁은 멀티바이트 문자열을 와이드 문자열로 변환
(함수) |
|
|
와이드 문자열을 좁은 멀티바이트 문자열로 변환
(함수) |
|
|
[virtual]
|
파일에서 읽을 때와 같이
ExternT
를
InternT
로 변환
(
std::codecvt<InternT,ExternT,StateT>
의 가상 protected 멤버 함수)
|
|
C documentation
for
mbstowcs
|
|