728x90
반응형

구문

char *setlocale( int category, const char *locale );

wchar_t *_wsetlocale( int category, const wchar_t *locale );

 

매개 변수

category
로캘의 영향을 받는 범주입니다.

locale
로캘 지정자입니다.

 

설명

c++에서 ifstream이나 ofstream으로 파일을 열고 생성할 때, 경로명 또는 파일명에 한글이 포함되면 파일 입출력이 동작하지 않습니다. 이를 해결하기 위해서는 프로그래밍에 언어 설정을 해줘야만 합니다.

 

category  종류

LC_ALL                                 전체 로캘
LC_COLLATE                        strcoll과 끝에 strxfrm의 동작에 영향을 줌
LC_CTYPE                            문자 처리 함수에 영향을 줌
LC_NUMERIC                       포맷 된 입/출력 작업 및 문자열 서식 기능 뿐만 아니라 loxaleconv에 의해 
                                              반환되는 비 화폐 성 정보의 소수점 문자에 영향을 줌
LC_TIME                                 strftime의 동작에 영향을 줌

Locale 종류
““                                             컴퓨터의 시스템 지역 설정을 따름
“.UTF8”                                   현재 기본 WINDOWS ANSI 코드 페이지(ACP)를 사용하고 코드 페이지
                                               에는 UTF-8 사용
“NULL”                                    C로 리턴됨
“C”                                          기본 베이스 언어 설정

 

 

사용

프로그램 시작 시 setlocale(LC_ALL, “c”); 사용자 코드가 실행되기 전에 실행됩니다.

setlocale은 파일 입출력 루틴 앞에 해 주어도 되고 프로그램 시작 부분에 해도 되고 아무 곳에서나 한번만 호출해 주면 됩니다.

** setlocale은 로캘 종속 함수의 실행에 영향을 미치는 전역 상태를 수정하기 때문에 다른 스레드가 fprintf, isprint, iswdigit 함수 중 하나를 실행하는 동안 한 스레드에서 호출하는 것은 정의되지 않은 동작입니다.

 

** 국가별 코드

https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/country-region-strings?view=msvc-170&viewFallbackFrom=vs-2017 

 

국가-지역 문자열

자세한 정보: 국가/지역 문자열

learn.microsoft.com

https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/language-strings?view=msvc-170 

 

Language Strings

자세한 정보: 언어 문자열

learn.microsoft.com

 

728x90
반응형

'c++ > c++' 카테고리의 다른 글

thread_local  (1) 2022.09.13
for문  (0) 2022.08.08
__declspec(thread) 지시자  (0) 2022.08.05
클래스 전방선언  (0) 2021.09.07
. 과 -> 의 차이  (1) 2021.07.12

+ Recent posts