답변:
이전 C ++ 표준과의 하위 호환성에 관심이 없다면 현재 C ++ 11 표준에 유니 코드 지원이 내장되어 있습니다. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011 /n3242.pdf
따라서 C ++에서 유니 코드 처리에 대한 진정한 모범 사례는 내장 된 기능을 사용하는 것입니다. 하지만 기존 코드베이스에서는 항상 가능한 것은 아니지만 표준은 현재 매우 새로운 것입니다.
편집 : 명확히하기 위해 C ++ 11은 이제 유니 코드 리터럴과 유니 코드 문자열을 지원한다는 점에서 유니 코드를 인식합니다. 그러나 표준 라이브러리는 유니 코드 처리 및 변환을 제한적으로 만 지원 합니다. 현재 필요에 따라 이것으로 충분할 수 있습니다. 그러나 지금 당장 많은 양의 무거운 작업을 수행해야하는 경우 더 심층적 인 처리를 위해 ICU 와 같은 것을 사용해야 할 수도 있습니다 . 다른 인코딩 간의 텍스트 변환에 대한보다 강력한 지원을 포함하기 위해 현재 작업중인 몇 가지 제안이 있습니다 . 내 추측 (그리고 희망)은 이것이 다음 기술 보고서의 일부가 될 것이라는 것 입니다.
우리 회사 (및 기타 회사)는 원래 Taligent에서 개발 한 오픈 소스 ICU ( Internation Components for Unicode ) 라이브러리를 사용합니다.
문자열, 로케일, 변환, 날짜 / 시간, 데이터 정렬, 변환 등을 처리합니다. al.
ICU 사용 설명서로 시작
다음은 Windows 프로그래밍을위한 검사 목록입니다.
C ++ 에서 대소 문자를 구분하지 않는 문자열 비교 살펴보기
이 질문에는 유니 코드에 대한 Microsoft 문서 링크가 있습니다. http://msdn.microsoft.com/en-us/library/cc194799.aspx
해당 기사 옆에있는 MSDN의 왼쪽 탐색 부분을 보면 유니 코드 함수와 관련된 많은 정보를 찾을 수 있습니다. "문자 인코딩"( http://msdn.microsoft.com/en-us/library/cc194786.aspx ) 에 대한 장의 일부입니다.
다음과 같은 하위 섹션이 있습니다.
이것이 모든 사람에게 모범 사례는 아니지만 원하는 경우 고유 한 C ++ UNICODE 루틴을 작성할 수 있습니다!
주말에 끝냈어. 많은 것을 배웠지 만 100 % 버그가 없다고 보장하지는 않지만 많은 테스트를했고 제대로 작동하는 것 같습니다.
내 코드는 New BSD 라이선스하에 있으며 여기에서 찾을 수 있습니다.
http://code.google.com/p/netwidecc/downloads/list
WSUCONV라고하며 UTF-8, UTF-16 및 표준 ASCII간에 변환하는 샘플 main () 프로그램과 함께 제공됩니다. 메인 코드를 버리면 유니 코드 읽기 / 쓰기를위한 멋진 라이브러리가 있습니다.
위에서 말했듯이 라이브러리는 대형 시스템을 사용할 때 가장 좋은 방법입니다. 그러나 때로는 자신이 직접 처리하고 싶을 때가 있습니다 (라이브러리가 마이크로 컨트롤러와 같은 많은 리소스를 사용하기 때문일 수 있습니다). 이 경우 실제로 필요한 부분을 복사 할 수있는 간단한 라이브러리가 필요합니다.
Willow Schlanger의 예제 코드는 좋은 것 같습니다 (자세한 내용은 답변 참조).
나는 또한 더 작은 코드를 가지고 있지만 완전한 오류 검사가없고 UTF-8 만 처리하지만 부분을 제거하는 것이 더 간단한 다른 것을 발견했습니다.
괜찮아 보이는 임베디드 라이브러리 목록이 있습니다.
UTF-8 Everywhere 의 권장 사항을 살펴보십시오.
string
이진 데이터로 취급하지 않는 한 .