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