에 * WCHAR에 나는 C.변환 문자는 * C
나는 많은 답을 발견 한 wchar*
문자열로 char*
문자열을 변환하고 싶지만, 대부분은 C에 대한 것입니다. 당신이 나를 도울 수?
감사합니다.
에 * WCHAR에 나는 C.변환 문자는 * C
나는 많은 답을 발견 한 wchar*
문자열로 char*
문자열을 변환하고 싶지만, 대부분은 C에 대한 것입니다. 당신이 나를 도울 수?
감사합니다.
setlocale()
다음에 mbstowcs()
이 뒤 따른다.
플래그로 swprintf
을 시도하십시오.
wchar_t ws[100];
swprintf(ws, 100, L"%hs", "ansi string");
당신은 윈도우 API의 availiable이 일어날 경우는, 변환 기능 MultiByteToWideChar이 UTF-16에 다른 인코딩에서 일부 구성 문자열 변환을 제공합니다 : 예
. 이식성에 대해별로 신경 쓰지 않고 다른 로케일 설정의 의미가 문자열 변환과 정확히 일치하는지 파악하고 싶지 않은 경우에 더 적합 할 수 있습니다.
당신이 찾고있는 단지의 char *에서 복사 기능과 같은
mbstowcs
작품 *
를 숯불 할 수 있지만,이 경우에 당신이에서 wchar_t *로 저장하는 것입니다
현재 ANSI 문자가있는 경우. 각 문자 앞에 0 ('\ 0')을 삽입하고 wchar_t *에 캐스트하면됩니다.
'char *'의 원래 인코딩은 무엇입니까? UTF8? ANSI? 당신의 시스템에서'sizeof (wchar)'이란 무엇이고 어떤 인코딩이 그것들에 의존 하는가? UCS-2 (16 비트)? UCS-4 (32 비트)? – Benoit
@ 베노아트 : 우와 ... 나는 sizeof (wchar)가 항상 2라고 생각 했지? – Mehrdad
@Mehrdad : 반드시 2 일 필요는 없습니다. 구현에 따라 정의됩니다. Windows에서 프로그래밍하는 경우에는 2 바이트 크기이며 UTF-16을 보유하고 서로 게이트 쌍에 대해 이중 wchar_t를 유지합니다. – Benoit