구문
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 함수 중 하나를 실행하는 동안 한 스레드에서 호출하는 것은 정의되지 않은 동작입니다.
** 국가별 코드
국가-지역 문자열
자세한 정보: 국가/지역 문자열
learn.microsoft.com
https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/language-strings?view=msvc-170
Language Strings
자세한 정보: 언어 문자열
learn.microsoft.com
'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 |