2010-03-22 10 views
47

예 :콘솔에 wchar_t 값을 어떻게 인쇄 할 수 있습니까?

#include <iostream> 

using namespace std; 

int main() 
{ 
    wchar_t en[] = L"Hello"; 
    wchar_t ru[] = L"Привет"; //Russian language 
    cout << ru 
     << endl 
     << en; 
    return 0; 
} 

이 코드에만 ADRESS 같은 헥스 값을 출력한다. wchar_t 문자열을 인쇄하는 방법은 무엇입니까?

+0

버전 y first 관련 질문은 http://stackoverflow.com/questions/1625531/c-wchar-to-stdcout-and-comparision –

+0

어떤 OS에서 어떤 콘솔 앱을 사용합니까? 일부 콘솔은 유니 코드를 지원하지 않습니다. –

+0

Windows 7 컴파일러 MSVS2008 – zed91

답변

53

편집 : 기본 로케일로 표현할 수없는 텍스트를 쓰려고하면 편집 할 수 없습니다. :-(

대신 사용 std::coutstd::wcout.

wcout << ru << endl << en; 
+3

영어 문자열 만 인쇄합니다. 러시아어는 어떨까요? – zed91

+8

콘솔에서 유니 코드를 사용할 수 없습니다. 아웃풋 리다이렉션 (output redirection)은 멈춤 (hangup)이다. 8 비트 char 레거시에서 멈춘다. 올바른 콘솔 글꼴이로드 된 러시아어 컴퓨터에서만 정확한 텍스트를 출력 할 수 있습니다. –

+0

Linux 콘솔로 인쇄하려고하면 대부분의 Linux 시스템이 utf16 인코딩을 사용하지 않으므로 깨진 문자로 끝날 가능성이 있습니다. –

9

std::wcout을 제안 할 수 있습니까?

그래서,이 같은 :

std::cout << "ASCII and ANSI" << std::endl; 
std::wcout << L"INSERT MULTIBYTE WCHAR* HERE" << std::endl; 

당신은 관련 질문 here에서 자세한 정보를 찾을 수 있습니다.

+0

러시아어로 작동하는지 확인하십시오 (copypaste it). 나에게는 그렇지 않다. –

+0

'cout'과'wcout'의 약점을 혼합하는 방법에 대해이 글을보십시오. https://stackoverflow.com/questions/8947949/mixing-cout-and-wcout-in-same-program –

0

당신은.이 언어를 통해 문자를 혼합 허용해야 사용을 실제로 UTF-8 문자로 가득 정상적인 문자 배열을 사용할 수 있습니다.

-3

우리는 쉬운 방법을 찾고되지 않습니다!

int i = 0; 
while (ru[i]) { 
    std::cout << (char)ru[i]; 
    i++; 
} 
+1

그 이상을 설명 할 수 있습니까? –

+2

이것이 효과가 있다면 넓은 문자를 사용할 이유가 없을 것입니다 ... – opetroch

0
#include <iostream> 
using namespace std; 
void main() 
{ 
setlocale(LC_ALL, "Russian"); 
cout << "\tДОБРО ПОЖАЛОВАТЬ В КИНО!\n"; 
} 
+0

코드와 함께 설명을 제공하여이 대답을 향상시킬 수 있습니다. –

+0

스택 오버플로에 오신 것을 환영합니다! 이 코드는 문제를 해결하는 데 도움이 될 수 있지만 질문에 대한 답을 _why_ 및/또는 _how_ 설명하지 않습니다. 이러한 추가적인 컨텍스트를 제공하면 장기적인 가치가 크게 향상됩니다. 어떤 제한 사항 및 가정이 적용되는지를 포함하여 설명을 추가하기 위해 답을 [편집하십시오]. –

관련 문제