1. 개념
•
I/O 스트림의 포맷은 특정 locale 설정에 맞춰져 있다
•
std::locale class 객체를 이용해 I/O 스트림의 locale 설정을 할 수 있다
•
특정 국가의 locale 값은 OS마다 다르다
◦
POSIX에서 미국 설정 값: en_US
◦
Windows에서 미국 설정 값: en-US
•
std::locale 생성자에 공백 스트링을 인자로 넘기면 사용자 환경에 맞는 locale 객체를 생성한다
2. imbue 활용
•
스트림의 imbue 메서드에 std::locale 객체를 넘기면 스트림의 locale이 설정된다
•
아래 코드를 실행하면 wcout, wcin의 모든 데이터 포맷은 사용자 시스템 locale에 맞춰진다
std::wcout.imbue(std::locale(""));
std::wcin.imbue(std::locale(""));
C++
복사
3. 글로벌 로케일 활용
•
std::locale::global 함수를 호출하면 애플리케이션의 글로벌 locale 설정을 변경한다
•
std::locale의 default 생성자는 글로벌 locale의 복제본를 반환한다
•
아래 코드를 실행하면 글로벌 locale 설정이 입출력 스트림에 적용된다
std::locale::global(std::locale(""));
C++
복사
4. 주의할 점
•
입출력의 locale 설정은 입출력 함수(wcout, wcin, ..) 사용 전에 끝내야 한다
•
입출력 함수를 사용하다가 locale 설정을 변경하려고 하면 문제가 생길 가능성이 높다