2012-03-17 3 views
2

나는 엑스 코드 4.2 코드 타격을 실행하려고 :wstring과 wcout을 사용하여 Xcode에서 중국어 단어를 출력하는 방법은 무엇입니까?

int main(int argc, const char * argv[]) 
{ 
    locale loc("chs"); 
    locale::global(loc); 

    wstring text(L"你好"); 
    wcout << text << endl; 
    return 0; 
} 

내가 오류 ": 신호 SIGABRT 스레드 1"을 얻었다.

오류가 발생하는 이유 또는 wstringwcout을 사용하여 중국어 단어를 출력하는 이유를 설명 할 수 있습니까?

+0

@CarlNorum : 백 트랙이란 무엇입니까? 내가 어디에서 찾을 수 있니? –

+1

[디버거] (http://en.wikipedia.org/wiki/Debugger)를 사용하는 법을 배워야하는 것처럼 들립니다. –

+0

@CarlNorum : 대개 VS Debugger를 사용합니다. VS 디버그에서 "호출 스택"을 의미한다고 생각합니까? –

답변

6

그렇지 않습니다. 다른 유닉스 시스템과 마찬가지로, Mac은 Windows가 "Unicode"(UTF-16)를 사용하는 동안 UTF8을 사용합니다.

wstringwcout 대신 stringcout을 사용하여 Mac에서 완벽하게 인쇄 할 수 있습니다.

추가 할

이 샘플은 훌륭합니다. g ++로 컴파일하고있는 그대로 실행하십시오.

#include <string> 
#include <iostream> 

using namespace std; 

int main(int arg, char **argv) 
{ 
    string text("汉语"); 
    cout << text << endl; 

    return 0; 
} 
+1

+1 당신이 * 정답 *을 받아야한다고 생각합니다! – trojanfoe

+0

문제 없습니다. 당신의 대답은 거의 동일합니다. –

1

충돌이 locale()로 호출에서오고있다. 이 SO answer과 관련된 것 같습니다.

#include <string> 
#include <iostream> 

using namespace std; 

int main(int argc, const char * argv[]) 
{ 

    string text("你好"); 
    cout<<text<<endl; 
    return 0; 
} 

가 생산 :

$ ./test 
你好 

편집 : 죄송합니다, Mahmoud Al-Qudsi에서 언급 한 바와 같이 당신이 정상 string 객체에 UTF-8을 사용할 수 있습니다로

, 당신은 필요 없어 너무 늦었습니다.

+0

우리 개발팀은 OS X에서 로케일 관리를 사용하지 않았습니다. OS X (다른 모든 OS와는 달리)는 유니 코드 이후의 세계에서 만들어졌습니다. 로케일 및 인코딩 설정에 대해 걱정할 필요가 없습니다.하지만 이미 소프트웨어를 사용하고 있다면 로케일 라이브러리가 손상 될 가능성이 있습니다 .... 버그. –

+0

@ MahmoudAl-Qudsi 현지화는 영어를 구사하는 개발자 (나 같은)가 매우 어려울 것이라고 생각합니다. 더 이상 전 세계가 영어를 사용한다고 가정 할 수는 없습니다. 기술을 습득하더라도 모든 개발의 쉬운 측면이 아닙니다. 당신은 여전히 ​​당신의 제품을 다른 언어로 번역하기 위해 종업원이 필요합니다. 그건 내가 무언가를 두려워하며 내 자신에 직면하고있는 것입니다 ... – trojanfoe

+0

"C/C++/System"로케일 설정만을 언급하고있는 "로케일 관리"를 말합니다. –

관련 문제