Namespaces
Variants

std:: mbsrtowcs

From cppreference.net
헤더 파일에 정의됨 <cwchar>
std:: size_t mbsrtowcs ( wchar_t * dst,

const char ** src,
std:: size_t len,

std:: mbstate_t * ps ) ;

* ps 로 기술된 변환 상태에서 시작하는 널 종료 멀티바이트 문자 시퀀스를 * src 가 가리키는 첫 번째 요소부터 시작하는 배열에서 와이드 문자 표현으로 변환합니다. dst 가 null이 아닌 경우, 변환된 문자들은 dst 가 가리키는 wchar_t 배열의 연속된 요소들에 저장됩니다. 최대 len 개의 와이드 문자만 목적 배열에 기록됩니다.

각 멀티바이트 문자는 std::mbrtowc 호출처럼 변환됩니다. 변환은 다음과 같은 경우 중지됩니다:

  • 멀티바이트 널 문자가 변환되어 저장되었습니다. src 가 널 포인터로 설정되고 *ps 가 초기 시프트 상태를 나타냅니다.
  • (현재 C 로캘에 따라) 유효하지 않은 멀티바이트 문자를 발견했습니다. src 가 변환되지 않은 첫 번째 멀티바이트 문자의 시작 부분을 가리키도록 설정됩니다.
  • 저장될 다음 와이드 문자가 len 을 초과할 경우입니다. src 가 변환되지 않은 첫 번째 멀티바이트 문자의 시작 부분을 가리키도록 설정됩니다. 이 조건은 dst 가 널 포인터인 경우 검사되지 않습니다.

목차

매개변수

dst - 결과가 저장될 와이드 문자 배열에 대한 포인터
src - 널 종료 멀티바이트 문자열의 첫 번째 요소에 대한 포인터의 포인터
len - dst가 가리키는 배열에서 사용 가능한 와이드 문자 수
ps - 변환 상태 객체에 대한 포인터

반환값

성공 시, 널 종료 문자 L ' \0 ' 를 제외하고 문자 배열에 기록된 와이드 문자 수를 반환합니다. dst 가 널 포인터인 경우, 무제한 길이가 주어졌을 때 기록되었을 와이드 문자 수를 반환합니다.

변환 오류 시(잘못된 멀티바이트 문자가 발견된 경우), static_cast < std:: size_t > ( - 1 ) 를 반환하며, EILSEQ errno 에 저장하고, * ps 를 지정되지 않은 상태로 둡니다.

참고 사항

이 함수는 src 포인터를 변환된 멀티바이트 문자열의 끝으로 이동시킵니다. 이는 dst 가 null 포인터인 경우에는 발생하지 않습니다.

예제

#include <clocale>
#include <cwchar>
#include <iostream>
#include <vector>
void print_as_wide(const char* mbstr)
{
    std::mbstate_t state = std::mbstate_t();
    std::size_t len = 1 + std::mbsrtowcs(nullptr, &mbstr, 0, &state);
    std::vector<wchar_t> wstr(len);
    std::mbsrtowcs(&wstr[0], &mbstr, wstr.size(), &state);
    std::wcout << "Wide string: " << &wstr[0] << '\n'
               << "The length, including '\\0': " << wstr.size() << '\n';
}
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    const char* mbstr = "z\u00df\u6c34\U0001f34c"; // or u8"zß水🍌"
    print_as_wide(mbstr);
}

출력:

Wide string: zß水🍌
The length, including '\0': 5

참고 항목

주어진 상태에서 다음 멀티바이트 문자를 와이드 문자로 변환
(함수)
주어진 상태에서 와이드 문자열을 좁은 멀티바이트 문자열로 변환
(함수)
[virtual]
파일에서 읽을 때와 같이 ExternT InternT 로 문자열 변환
( std::codecvt<InternT,ExternT,StateT> 의 가상 protected 멤버 함수)
C documentation for mbsrtowcs