2010-01-30 6 views
0

페이지 (601)이 "유사한 문자 집합"카테고리 아래<cctype> 함수는 유니 코드와 함께 작동합니까? 는 C++ 스페셜 에디션의

In <ctype.h> and <cctype>, the standard library provides a set of useful functions for dealing with ASCII and similar character sets.

겠습니까 유니 코드 가을 ...라고?

+0

0-> 127 범위의 유니 코드 코드 포인트의 하위 세트 만 사용하고 UTF-8 인코딩을 사용하는 경우 위의 헤더에서 함수가 올바르게 작동해야합니다. –

+0

IBM의 멋진 오픈 소스 라이브러리가 있습니다. 바로 이름이 기억 나지 않습니다. 거대한 데이터베이스와 유니 코드 문자에 대해 흥미로운 질문을 할 수있는 수많은 기능이 있습니다. 나는 표준 라이브러리 물건들에 대해 그것을 권하고 싶다. 'wchar_t'는 쓸모 없게 막연합니다. – Omnifarious

+0

@Omnifarious : "ICU". – kennytm

답변

0

유니 코드 지원은 언어의 주요 문제점이었습니다. 비 ANSI 용 로케일을 설정하고 wchar_t 변형을 사용해야합니다. wchar_t의 정확한 의미는 구현에 따라 다릅니다. 예컨대 :

setlocale(LC_CTYPE, "en_ca.UTF-8"); 

locales에 유니 코드 컨소시엄 페이지를 살펴 보자.

+0

흠 ... 그렇다면 의 작동이 보장 되나요? 아니면 구현에 따라 달라 집니까? – Anonymous

+0

효과가 있습니다. 내가 말한 것은'wchat_t'는 UCS-4와 같은 형식을 지정하지 않는다는 것입니다. 다중 바이트 데이터를 나타냅니다. 기본 형식은 시스템마다 다릅니다. – dirkgently

0

<cctype>의 기능은 실제로 유니 코드 인코딩을 지원하는 데 사용할 수 없습니다.

비슷한 문자 세트의 메모는 8 비트 문자 인코딩 계열과 정확히 관련되어 있다고 생각합니다 (예 : EBCDIC).

그러나 ASCII는 유니 코드의 하위 집합 (또는 변형)을 고려하는 것이 맞습니다. 유니 코드의 UTF-8 인코딩을 사용하면 처음 128 코드 포인트는 128 ASCII 문자와 같고 처음 256 문자는 라틴어 -1과 동일합니다. 즉, 모든 ASCII는 유효한 UTF-8로 간주됩니다.

0

정말 구현에 따라 다릅니다. C++은 확실히 그것을 허용하지만 강제는 아닙니다. CHAR_BIT> = 20이 필요합니다. 실제로 구현하지 않습니다. 유니 코드는 일반적으로 wchar_t 및 해당 <cwctype> 헤더로 지원됩니다.

관련 문제