std locale 예제

Posted on

로캘 개체를 iostream에 스며들 수 있으므로 로캘에 따라 정보를 포맷할 수 있습니다. 클래스 ID의 개체를 복사하거나 할당할 수 없습니다. 각 로캘 범주는 해당 범주와 관련된 기능을 캡슐화하는 클래스인 면 수로 나뉩니다. 예를 들어 시간 범주에는 시간 입력 및 출력을 각각 수행하는 함수가 포함된 facets time_put 및 time_get이 있습니다. 화폐 카테고리에는 money_get, money_put 및 moneypunct가 있습니다. (후자의 면은 통화 기호를 결정합니다.) 다음 프로그램은 머니펀트 면을 보여 줍니다. (시간 면에는 이 장의 범위를 벗어난 이터레이터를 정교하게 사용해야 합니다.) 이러한 모든 요구 사항에 대한 표준 C ++ 라이브러리의 대답은 아직 모든 컴파일러에서 구현되지 않은 새로운 표준 기능을 포함하여 언어의 모든 기능을 사용합니다 [1997! 현재 의 모든 컴파일러에는 이 코드에 아무런 문제가 없습니다.]. 이 문서에서는 C++ 로캘 라이브러리를 사용하는 방법을 제안합니다. 또한 구현 방법을 보여 주므로 자체 프로그램에서 동일한 기술을 사용할 수 있습니다. 프로그램 내에서 C 로캘은 하나 이상의 전역 데이터 구조로 표시됩니다.

C 라이브러리는 이러한 전역 데이터 구조의 정보를 사용하여 해당 동작을 로컬 규칙에 맞게 조정하는 함수 집합을 제공합니다. 이러한 함수의 예와 해당 함수가 다루는 정보는 표 2: 프로그램 시작 시 전역 로캘은 클래식 로캘과 동일합니다. global() 함수는 표준 C 라이브러리에서 일치하는 로캘을 설정하기 위해 setlocale(LC_ALL, loc.name c_str))를 호출합니다. 표 1에 나열된 바와 같이 C 로캘은 LC_NUMERIC(숫자의 규칙 및 기호), LC_TIME(날짜 및 시간 정보의 값), LC_MONETARY(금전적 정보에 대한 규칙 및 기호), LC_CTYPE ( 문자 분류 및 변환), LC_COLLATE(데이터 정렬 시퀀스) 및 LC_MESSAGE(메시지의 형식 및 값) 이러한 차이점을 자세히 살펴보려면 로캘이 일반적으로 어떻게 사용되는지 살펴보겠습니다. C++에서 로캘은 표준 C++ 라이브러리에서 제공하는 로캘이라는 클래스입니다. C++ 클래스 로캘은 언어 테이블 또는 다양한 문화및 언어 종속성의 데이터 표현 이상이기 때문에 C 로캘과 다릅니다. 또한 C에서 글로벌 기능인 국제화 서비스도 포함됩니다. 이러한 면의 미리 정의된 그룹은 표준 C 라이브러리에서 전통적으로 관리되는 로캘 범주를 함수 setlocale에 의해 나타냅니다.

facet 클래스 인스턴스는 로캘의 일부로만 유용합니다. 예제 5는 로캘의 일부로 면 인스턴스를 설치하는 한 가지 방법을 보여 주며,