검색결과 리스트
글
setlocale 사용법
프로그래밍/c++
2013. 1. 28. 12:04
c++에서 ifstream이나 ofstream으로 파일을 열고 생성할 때, 경로명 또는 파일명에 한글이 포함되면 파일 입출력이 동작하지 않는다. 경험이 없다면 찾기 힘든 문제이다.
해결법은 setlocale(LC_ALL, "")을 호출해 주면 된다. 파일 입출력 루틴 앞에 해 주어도 되고 프로그램 시작 부분에 해도 되고 아무 곳에서나 한번만 호출해 주면 된다.
setlocale(LC_ALL, "Korean")을 해 주어도 동작하지만 컴퓨터의 시스템 지역 설정을 따르게 하는 setlocale(LC_ALL, "")를 사용하는게 좋을 것 같다. 한글을 사용하는 사람들은 지역설정(locale)을 한글로 해 놓았을 테니까 ^^
일시적으로만 locale을 바꾸고 싶다면 다음과 같이 처리한다.
// 현재 locale을 저장
char *old_locale_tmp = setlocale(LC_ALL, NULL); // 임시 locale 문자열 주소 반환
char *old_locale_saved = strdup(old_locale_tmp); // 반환받은 old locale 문자열 주소가 이후 setlocale 호출로 변경되지 않도록 별도로 메모리를 할당받아서 저장
// locale을 변경하고 필요한 작업을 수행
setlocale (LC_ALL, new_locale);
...
// locale을 복구
setlocale(LC_ALL, old_locale_saved);
free(old_locale_saved);
by 다크 프로그래머
'프로그래밍 > c++' 카테고리의 다른 글
다이얼로그(dialog) UI 블로킹(응답없음) 현상 해결법 - C++ MFC (11) | 2013.02.22 |
---|---|
디렉토리(directory) 접근 C++ Win32 함수 총정리 (11) | 2013.02.12 |
다이얼로그에서 키보드 메시지(이벤트) 받기 (1) | 2013.01.28 |