[C++] wstring 제대로 출력하기

Posted by Programmer™
2025. 6. 27. 12:02 카테고리 없음

 

 

wstring  타입의 변수에 다국어를 저장한 예제입니다.

앞에 std:: 를 붙이기 귀찮으면 헤더파일에 #include <string> 를 추가하면 됩니다.

 

 

 

실행한 결과입니다. 영어만 제대로 출력되고, 한국어, 일본어, 중국어는  표시되지 않습니다.

 

 

 

이럴때 setlocale 을 사용하면 됩니다.

 

setlocale 함수는 프로그래밍에서 C 런타임 라이브러리의 현재 로캘을 설정하거나 쿼리하는 데 사용됩니다. 이 함수는 통화 형식, 날짜 및 시간 형식, 문자 분류 등 다양한 범주의 로캘 설정을 변경할 수 있습니다. setlocale을 사용하려면 일반적으로 설정하려는 범주와 로캘 문자열, 두 개의 매개변수를 사용하여 호출합니다.

 

어느 분 블로그를 보니 LC_ALL 을 모든 지역으로 설명했던데 그것이 아닙니다. 

접두어 LC는 Locale Category 의 약자입니다.  어떤 어떤 함수들이 영향을 받는지 그 범위를 지정하는 매개변수입니다.

 

setlocale( LC_ALL, "" ); 은 로캘을 운영 체제에서 가져온 사용자 기본 ANSI 코드 페이지인 기본값으로 설정합니다.

 

 

 

실행해보면  이번에는 한국어와 중국어가 제대로 출력이 되지 않습니다.

 

 

SetConsoleOutputCP 함수를 추가해줘야 합니다.

SetConsoleOutputCP 함수는 호출 프로세스와 연결된 콘솔에서 사용하는 출력 코드 페이지를 설정합니다.

그리고 로캘을 CP_UTF8 로 설정해줍니다. CP 는 CodePage 의 약자입니다.

 

 

 

실행한 결과입니다. 영어, 일본어, 중국어, 한국어가 모두 제대로 표시되고 있습니다.