2011-05-13 2 views
14

새로운 문자 유형 char8_t, char16_tchar32_t을 고려하여 wchar_t (C++ 0x)의 운명은 무엇입니까?C++ 0x에서 wchar_t의 운명은 무엇입니까?

더 중요한 것은 std::wstring, std::wcout 등은 무엇인가요?

w * 패밀리 클래스가 사용되지 않습니다.
새 문자 유형에 대해 새로운 std::ustringstd::Ustring 클래스가 있습니까?

+1

http://stackoverflow.com/questions/872491/new-unicode-characters-in-c0x를 참조하십시오. 모든 질문 (예 : 지원 중단)에 대한 답변이 아니지만 wchar_t가 지원 중단되지 않을 것으로 생각됩니다. 이미 사용중인 코드가 너무 많습니다. –

+2

@Boaz Yaniv : 비추천이란 일반적으로 아무 의미가 없다는 것은 말할 필요도 없습니다. 구현자는 오래된 소프트웨어를 컴파일해야하기 때문에 폐기 된 것들을 구현하고, 누구도 비추천 경고 때문에 오래된 소프트웨어를 다시 작성하지 않을 것입니다. –

+0

아무도 비추천 경고를 통해 불량 소프트웨어를 다시 작성하려고하지만 정직하게 찾기 및 바꾸기는 그다지 큰 거래가 아닙니다. 우리는 이미 모든 코드에서'nullptr'에 찬성하여 NULL을 버렸습니다. – AJG85

답변

8

wchar_t에는 아무런 변화가 없으며, 여전히 구현 특정 (및 C와 호환 가능)입니다.

새로운 유형 char16_t와 char32_t는 새로운 표준에서 의미론을 정의했습니다. 이전 wchar_t 일 수 있지만 그 중 하나와 동일 할 수 있지만 다른 구현에서는 다른 것과 다를 수 있습니다. 또는 일부 시스템에서는 그렇지 않습니다.

새 문자 유형의 문자열에는 typedefs u16stringu32string이 있지만 새로운 표준 스트림은 없습니다.

+0

std :: string에 utf8 문자가 포함되어야하는지 확인할 수 있습니까? 아니면 다른 유형이 있습니까? u8string? – Klaim

+3

'u8string'이 없습니다. 'char'는 "UTF-8 코드 유닛", "기본 실행 문자 세트의 멤버"또는 "바이트"의 오버로드 된 의미를가집니다. – dan04

+2

@Klaim - Dan이 말했듯이, std :: string은 UTF-8을 포함 할 수 없습니다. 해석을 결정하는 것은 응용 프로그램에 달려 있습니다. 언어에는 이미 세 가지의 좁은 문자 유형이 있으며위원회는 네 번째 문자를 추가하는 것을 주저했습니다! –

관련 문제