내 애플리케이션의 모든 std :: string을 Boost.Locale을 사용하여 유니 코드를 지원하도록 할 수 있습니까? 문서를 읽은 후에 나는 '예'라고 말할 수 있습니다. 하지만 어떻게 작동하는지 이해하지 못합니다. 주요 질문은 여전히 부스트 문자열 알고리즘 라이브러리 또는 Boost.Lexical_Cast 라이브러리를 사용할 수 있습니까? 그렇다면 왜 부스트 문자열 알고리즘 라이브러리에 이러한 메서드가 있으면 boost::locale::to_upper 및 이와 유사한 형식 메서드가 필요합니다.Boost.Locale - C++의 유니 코드 문자열
답변
예. 응용 프로그램의 모든 문자열을 Boost.Locale로 인코딩 된 유니 코드로 만들 수 있습니다.
작동 시키려면 문자열에 로캘을 넣거나 기본 전역 로캘을 새 유니 코드 기반 로캘 (Boost.Locale에 의해 생성됨)로 설정하십시오. 여기에 작업을 수행하는 방법에 대한 참조 : Boost.Locale에 http://www.boost.org/libs/locale/doc/html/locale_gen.html 및 http://www.boost.org/libs/locale/doc/html/faq.html
문자열 조작 API를 부스트 문자열 알고리즘 라이브러리에서 제공하는 것과 다릅니다. 명시 적으로 지역을 통과 할 수없는, 내가 올바르게 기억 경우,로 (정확하게 글로벌 로케일을 설정 제공, http://www.boost.org/libs/locale/doc/html/conversions.html이
당신은 여전히 부스트 :: lexical_cast를 사용할 수 있습니다 Boost.Locale 기능이 더 나은 이유는 여기를 참조하십시오 Boost.LexicalCast에 객체).
그러나 C 로케일 (예 : 이전 기본값)을 사용하는 대신 정수를 문자열로 변환 할 때와 같이 일부 경우가 '중단'됩니다. 다른 경우를 사용합니다. 분리자를 삽입 할 수 있습니다. 사용자에게 표시되지 않는 변환을 수행 할 때 std :: stringstream 등을 직접 사용하여 원하지 않는 서식 변경을 피할 수 있습니다.
Boost.Locale documentation은 대부분의 우려 사항 (특히 FAQ, 생성 백엔드 정보 등)을 다루어야하므로 매우 유용합니다.