C++에서 유니코드 한글 출력 질문드립니다.
조회수 4976회
#include <iostream>
#include <clocale>
using namespace std;
int main() {
setlocale(LC_ALL, "");
wchar_t str1[] = L"WBCS 1";
wchar_t str2[100];
wchar_t str3[50];
wcout << str1 << endl;
wcout << L"string size: " << sizeof(str1) << endl;
wcout << L"string length: " << wcslen(str1) << endl;
wcout << endl;
wcout << L"input string 1: ";
wcin >> str2;
wcout << L"input stirng 2: ";
wcin >> str3;
wcscat(str2, str3);
wcout << L"string 1 + string 2: " << str2 << endl;
return 0;
}
분명 소스 파일의 인코딩을 UTF-8로 설정했는데도 불구하고 wcin 부분에서 한글 입/출력이 안 됩니다.
뭐가 문제인 건가요?
컴파일 환경은 g++ 6.3.0 버전입니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
- ubuntu 16.04(gcc version 5.4.0 20160609)
(py36) allinux@allinux-DESKTOP:~:> g++ -o main2 main2.cpp (py36) allinux@allinux-DESKTOP:~:> ./main2 WBCS 1 string size: 28 string length: 6 input string 1: 한글 input stirng 2: 가나다라 string 1 + string 2: 한글가나다라
- windows 10 x64 visual c++ 2017(MSVC++ 14.1)
WBCS 1 string size: 14 string length: 6 input string 1: 가나다라 input stirng 2: 한글 string 1 + string 2: 가나다라한글
저는 문제없이 한글이 잘 출력됩니다.
리눅스의 로케일은 윗 답변과 같습니다.
-
쉘에서 locale 명령으로 현재 적용중인 로케일 확인이 필요합니다.
allinux@allinux-DESKTOP:~:> locale LANG=ko_KR.UTF-8 LANGUAGE= LC_CTYPE="ko_KR.UTF-8" LC_NUMERIC="ko_KR.UTF-8" LC_TIME="ko_KR.UTF-8" LC_COLLATE="ko_KR.UTF-8" LC_MONETARY="ko_KR.UTF-8" LC_MESSAGES="ko_KR.UTF-8" LC_PAPER="ko_KR.UTF-8" LC_NAME="ko_KR.UTF-8" LC_ADDRESS="ko_KR.UTF-8" LC_TELEPHONE="ko_KR.UTF-8" LC_MEASUREMENT="ko_KR.UTF-8" LC_IDENTIFICATION="ko_KR.UTF-8" LC_ALL=
- 아 작업환경은 윈도우 10입니다. 혹시나 해서 SetConsoleOutputCP(65001); 명령으로 출력 콘솔을 UTF-8로 설정했는데 결과는 똑같네요. 알 수 없는 사용자 2018.1.13 02:14
- vc에서는 어떤가요? 정영훈 2018.1.13 18:53
- VS2017에서도 출력이 안 되네요. 코드 자체가 잘못된 거 같은데 어디가 문제인지 모르겠습니다... 알 수 없는 사용자 2018.1.13 22:54
댓글 입력