2017-01-14 5 views
9

그래서 저는 현재 C++ 11을 배우고 있습니다. 저는 다른 언어를 사용하여 놀고 싶습니다. 베트남 사람이기 때문에 베트남 문자를 사용하는 C++ 프로그램을 만들고 싶습니다.C++에서 베트남어 문자를 표시하는 방법은 무엇입니까?

cout << "Hello. This is English" << endl; //English 
cout << "Chào. Đây là tiếng Việt." << endl; //Vietnamese 

나는 C++이 <locale>을 가지고 들었

그래서 내가 어떻게 베트남어 자에게 영어 같이되는, 표시되는 것과 같은 방식으로 표시 할 수 있습니다. 베트남 문자를 표시하는 데 도움이됩니까?

+0

귀하의 질문에 어떤 문제가 발생하고 있다고 말하지 않습니다 ...? – jtbandes

+0

'wcout' 등을 사용해야합니다. 넓은 문자/문자열을 찾으십시오. –

+0

'#include ','std :: setlocale (LC_ALL, ");','std :: wcout << L"Chào. Đây là ".. .. 모든 플랫폼에서 작동하지만 .. 어떤 시스템을 사용하고 계십니까? Windows에서 언어 팩을 설치하지 않고 문자를 표시하지 않을 수 있습니다. 이 코드는 여러 로케일이 설치된 리눅스 시스템 중 하나에서 훌륭하게 작동하지만, BSD는 로컬 설치가되어 있지 않기 때문에 할 수있는 것만 표시합니다 .. – txtechhelp

답변

3
#include <iostream> 
#include <io.h> 
#include <fcntl.h> 

int main() { 
    _setmode(_fileno(stdout), _O_U16TEXT); 
    std::wcout << L"Chào. Đây là tiếng Việt."; 
} 

이것은 Windows에서 작동하는 솔루션입니다. 불행히도 다른 플랫폼으로 이식 할 수 없습니다.

+0

이것은 내 시스템에서 작동하지 않지만 경찰 문제 일 수 있습니다. 나는 성격을 표시 할 수 없다 :'ế', 너에게 효과가 있니? 내 솔루션에도 같은 문제가 있습니다. – nikau6

+0

예. 올바르게 표시됩니다. 대신 당신은 무엇을 얻습니까? – ScY

+0

아이러니하게도 대부분의 다른 플랫폼에서는 코드 할 수없는 코드가 필요하지 않습니다. UTF8 출력을 설정할 수 있습니까? – dascandy

6

환경에 문제가있을 수 있습니다. 비 (기타와 Chào thế giới!

: 당신은 어떤 플랫폼/환경이 당신이 실행하는 말을하지만, 다음과 같은 과정을 선택하지 않습니다

#include <iostream> 
#include <cstdlib> 

int main() 
{ 
    std::cout << u8"Chào thế giới!" << std::endl; 
    return EXIT_SUCCESS; 
} 

이 맥 OS X에 사용하여 ITerm에서 다음과 같은 출력을 산출 유니 코드) 환경에서 동일한 코드를 사용하면 UTF-8 문자가 출력시 ASCII로 해석 될 수 있습니다. Windows 명령 줄에서 무엇을 얻을지 모르겠지만 IDE를 사용하는 경우 IDE는 UTF-8을 렌더링 할 수도 있고하지 않을 수도 있습니다.

다음은 웹 예입니다.

https://code.sololearn.com/c39N9RN6b4Md/#cpp 수율 : Ch├áo thß║┐ giß╗¢i!

그러나 http://ideone.com/OkkUZs 정확히 동일한 코드 수율을 실행 : Chào thế giới!

또한 아마 C++에서 제대로 UTF-8 문자열을 처리하는 "문자"를 계산하는 지적 가치, 문자열이 유효한 UTF-8인지 확인하십시오. 유니 코드 라이브러리를 사용하고 싶을 것입니다. 유니 코드로 작업하는 것이 중요하지 않습니다.

개인적으로 나는 https://github.com/nemtrif/utfcpp과 TinyUTF8을 모두 발견했습니다. here은 합리적으로 작고 간단하며 효과적입니다.

희망이 있습니다.

+1

Linux (Ubuntu 16.10 시도)에는 기본 UTF8 콘솔도 있습니다. – dascandy

+0

그냥 IMHO가되어야합니다. :) 왜냐하면 http://utf8everywhere.org. – U007D