CHUnicode2ANSI
Unicode 문자열을 ANSI 문자열로 변환합니다.
long CHUnicode2ANSI ( const GS::uchar_t* pWChars, // unciode string to convert long nWChars, // number of chars in string char* pChars, // buffer for new string long maxChars, // size of buffer GSCharCode charCode = CC_Default, bool lossyConversion = true, // unconvertable paremeters are converted to platfrom replacement char CHUnicode2ANSICacheRef* cache = NULL // can be used to cache conversion result, if called twice );
파라미터
- pWChars
- [in] 변환할 Unicode wide-character 문자열을 가리킵니다.
- nWChars
- [in] pWChars 파라미터가 가리키는 문자열의 wide character들의 수를 지정합니다. 만약 이 값이 -1이면, 이 문자열은 null로 끝난다고 가정하고 길이가 자동으로 계산됩니다. 길이는 null-terminator를 포함하게 될 것입니다.
- pChars
- [out] 변환된 문자열을 받을 버퍼를 가리킵니다.
- maxChars
- [in] pChars 파라미터가 가리키는 버퍼의 바이트 단위의 크기를 지정합니다. 만약 이 값이 0이면, 이 함수는 버퍼에 대하여 요청된 바이트들의 수를 리턴합니다. (이 경우, pChars 버퍼는 사용하지 않음)
- charCode=CC_Default
- [in] 변환을 수행하기 위해 사용되는 코드 페이지를 지정합니다. 이 파라미터에 대하여 CC_UTF8이 유효합니다.
- lossyConversion
- [in] 만약 true이면, 표현할 수 없는 문자들을 Windows의 경우 시스템 의존적인 기본 대체 문자로, MacOS의 경우 '?'로 변환합니다. 만약 false이면, 표현할 수 없는 문자를 만나게 되면 변환이 실패하게 됩니다.
- cache
-
[in/out] 만약 null이 아니면, 2-단계 호출들에 대한 변환 결과를 캐시합니다.
일반적으로 당신은 동일한 ANSI 문자열로 변환을 2번 호출합니다.
먼저 결과의 길이를 계산하기 위해 당신은 버퍼를 할당할 수 있습니다. 그리고 나서 버퍼에 결과를 저장합니다.
길이 계산을 위해 사용된 변환된 문자열을 캐시하기 위해 이 파라미터를 사용할 수 있습니다. 그래서 이것은 변환시에 재사용될 수 있습니다.
만약 maxChars가 0이며 cache가 NULL이 아니면, 이것은 NULL Unicode2ANSICacheRef를 가리켜야 합니다.
만약 재활용 가능한 정보가 무엇이라도 존재한다면, 그것은 이 레퍼런스 안에 저장될 것입니다.
레퍼런스는 차후 호출시에 CHUnicode2ANSI 또는 CHFreeUnicode2ANSICache로 해제됩니다.
만약 maxChars가 0이 아니며 cache가 NULL이 아니면, 유효한 케시를 가리킵니다. 변환시 도움을 받기 위해 이 캐시를 사용합니다.
cache가 0이 아닌 경우, 이 함수는 pWChars와 nWChars 대신 cache 데이터를 사용할 수도 있습니다.
cache는 해제될 것이며 사용 후에 0으로 채워질 것입니다.
GS::Unicode2ANSICacheRef cache = 0; len = CHUnicode2ANSI (uniStr, GS::CStringLen, 0, 0, CC_Default, true, &cache); if (len > 0) { try { p = new char [len]; res = CHUnicode2ANSI (uniStr, GS::CStringLen, p, len, CC_Default, true, &cache); } catch (std::bad_alloc& ) { if (cache) CHFreeUnicode2ANSICache (cache); } }
리턴 값
만약 함수가 성공하고 maxChars가 0이 아니면, 리턴 값은 pChars가 가리키는 버퍼에 작동된 바이트들의 수입니다. 이 수는 null terminator에 대한 바이트를 포함하고 있습니다.
만약 함수가 성공하고 maxChars가 0이면, 리턴 값은 변환된 문자열을 받을 수 있는 버퍼에 대한 바이트 단위의 요청된 크기입니다.
만약 함수가 실패하면, 리턴 값은 0입니다. 이 함수는 다음의 경우 실패할 수 있습니다:
- 메모리가 부족함.
- 유효하지 않은 파라미터들.
- lossyConversion이 false이며 입력 문자열 안에 대상 코드 페이지로 표현할 수 없는 문자들이 있습니다.
- 제공된 버퍼가 너무 작음.
설명
pChars와 pWChars 포인터들은 동일하거나 중첩되어서는 안 됩니다. 그러한 경우에 대한 결과는 정의되어 있지 않습니다!
이 함수는 MacOS의 경우 CoreFoundation String 서비스들을, Windows의 경우 MultiByteToWideChar를 이용하여 구현되었습니다.
요구사항
- 버전: GSRoot 1.3 또는 이후
- 헤더: CH.hpp
- 라이브러리 가져오기: GSRootImp.lib
- 모듈: GSRoot