std::locale로 현재 시스템의 locale 설정하기 (for Windows)

Windows 환경에서 STL의 기본 로케일 값이 한글 출력에 문제가 있을 수 있다.
현재 시스템 언어가 한글이라면 아래와 같은 방법으로 간단히? 설정할 수 있다.

struct InitSTLLocale {
    InitSTLLocale() {
        // C Locale에서 현재 시스템의 로케일(OEM Code Page) 설정 중 ctype과 collate만 덮어쓴 로케일로 생성한다
        std::locale loc(std::locale::classic(), ".OCP", std::locale::ctype | std::locale::collate);

        // 아래는 Ansi Code Page를 사용할 때
        std::locale loc(std::locale::classic(), ".ACP", std::locale::ctype | std::locale::collate);
        
        // 원하는 곳에 설정
        std::wcin.imbue(loc);
        std::wcout.imbue(loc);
        std::wcerr.imbue(loc);
        std::cin.imbue(loc);
        std::cout.imbue(loc);
        std::cerr.imbue(loc);
    }
} _gInitSTLLocale;