Namespaces
Variants

std:: mbstowcs

From cppreference.net
헤더 파일에 정의됨 <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