Search

C++ | 입출력 locale 설정 방법

Date
2024/07/26
category
C++
Tags
c++

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 설정을 변경하려고 하면 문제가 생길 가능성이 높다