Visual Studio 2019에서 UTF-8로 한글 스트링에 대해서 std::cin이 안되네요
글쓴이: levis93 / 작성시간: 월, 2019/04/29 - 6:49오후
학교에서 C++ 과제를 하는데 cin으로 한글이 입력이 안되어서 테스트 소스를 작성하여 테스트 중입니다.
C++11 표준대로 std::cin에 UTF-8로 한글 입력을 받으려고 하는데 윈도우 콘솔 출력 시에는 아무것도 안나오는데 제 테스트 소스 코드에서 잘못된 부분이 있나요?
실행 결과는 이렇게 나와요.
--------
입력.
가나다라마바사
Press any key to continue . . .
[경로명] 이(가) 0 코드로 인해 종료되었습니다.
이 창을 닫으려면 아무 키나 누르세요.
----------
std::cin.imbue를 없애도 똑같이 입력받은 스트링이 보이지가 않습니다.
과제는 비주얼 스튜디오로 해야하는데 우분투의 G++ 8.0.4로 작성할 때에는 입력받은 한글 스트링도 제대로 나옵니다.
#pragma once #include <iostream> #include <string> #include <locale> #include "windows.h" using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.imbue(locale("ko-KR.UTF-8")); SetConsoleOutputCP(CP_UTF8); string str = u8"입력."; // 콘솔에서 UTF-8 스트링인데도 정상적으로 출력. string input; cout << str << endl; cin >> input; cout << endl; cout << input << endl; // Visual Studio에서 컴파일 시에 문제가 되는 구문. 입력받은 스트링 input이 출력되지 않고 빈칸으로 보임. 디버깅 시에 조사식에서는 입력된 것으로 확인. system("pause"); return 0; }
Forums:
같은 증상입니다.
저도 그런 증상이 나타나네요 ;;;
utf-8로 저장한 텍스트 파일을 실행파일에
utf-8로 저장한 텍스트 파일을 실행파일에 리디렉션으로 넣어주면 되네요.
(메모장의 기본 인코딩이 UTF-8이네요... 언제부터 이랬죠? 놀라운 변화입니다.)
cmd창에 한글 입력해서는 안되구요...
test_program.exe < 1.txt
댓글 달기