당신은 쓸 때
cout << "\u2780";
컴파일러는 \ u2780을 실행 문자 집합에서 해당 문자의 적절한 인코딩으로 변환합니다. 아마 UTF-8이기 때문에 문자열은 4 바이트 (문자의 경우 3 개, 널 종결 자의 경우 1 개)를 갖게됩니다.
런타임시 문자를 생성하려면 런타임시 컴파일러가 컴파일시에 수행하는 UTF-8로 동일한 변환을 수행 할 방법이 필요합니다.
C++ (11)는 그러나 된 libstdC++, GCC와 함께 제공되는 표준 라이브러리 구현, 아직 (GCC 4.8로)를 구현 주위를 확보하지 있으며,이 작업을 수행 할 수있는 편리한 wstring_convert
템플릿과 codecvt 측면을 제공합니다 . 다음은 이러한 기능을 사용하는 방법을 보여줍니다. 그러나 다른 표준 라이브러리 구현을 사용하거나 libstdC++가이를 구현할 때까지 기다려야합니다.
#include <codecvt>
int main() {
char32_t base = U'\u2780';
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> convert;
std::cout << convert.to_bytes(base + 5) << '\n';
}
사용할 수있는 다른 UTF-8을 만드는 방법을 사용할 수도 있습니다.예를 들어, iconv, ICU 및 pre-C++ 11 codecvt_byname 패싯의 수동 사용은 모두 작동합니다. (즉, 코드가 wstring_convert
허용하는 간단한 코드보다 더 복잡 것 때문에 이들의 예를 표시하지 않습니다.)
문자의 소수를 위해 일하는 것이 대안의 배열을 생성하는 것입니다 문자열은 리터럴을 사용합니다.
char const *special_character[] = { "\u2780", "\u2781", "\u2782",
"\u2783", "\u2784", "\u2785", "\u2786", "\u2787", "\u2788", "\u2789" };
std::cout << special_character[i] << '\n';
는'L' 연산자 wchar_t를 사용하고 있습니까? 가능한 경우 전체 코드 게시 또는 [sscce.org] (SSCCE) – pinkpanther
유니 코드 인코딩을 사용하지 않으려면 테이블을 사용하여 문자열을 추가하는 대신 가능한 'x'값으로 매핑 할 수 있습니다. – dyp
[C++에서 유니 코드 문자를 인쇄하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/12015571/how-to-print-unicode-character-in-c) –