내 코드는 기본적으로 이것이다 :C++ : 와이드 문자가 잘못 출력됩니까?
wstring japan = L"日本";
wstring message = L"Welcome! Japan is ";
message += japan;
wprintf(message.c_str());
나는 넓은 문자열을 사용하고자하는거야하지만 난 그들이 출력하는 방법을 모른다는, 그래서 wprintf을 사용했다. 나는 같은 것을 실행하면 :
65 57 63 6c 6d 6f 21 65 4a 20 70 61 6e 61 69 20 20 73 3f 3f
e W c l m o ! e J p a n a i s ? ?
왜 그들은 모두 순서대로 뛰어됩니다
./widestr | hexdump
를 16 진수 코드 점은이를 만들? 나는 wprintf가 잘못되었다는 것을 의미한다. 나는 아직도 왜 그렇게 복잡한 순서로 출력 할 것인가를 알지 못한다!
편집 : endianness 또는 something? 그들은 각 두 문자를 회전하는 것처럼 보입니다. 허.
편집 2 : wcout을 사용하여 시도했지만 똑같은 16 진수 코드 포인트를 출력합니다. 기묘한!
아마도'cout << message << endl'을 시도해야 할 것입니다. – phimuemue
@phimuemue, 그것은 작동하지 않습니다, 그것은 대략 나를 포함하여 대략 30 개의 오류를 보내고, 처음에는 'widestr.cpp : 18 : error :'연산자 '에 대한 일치'는 'std :: cout << message'' ostream char 특성 또는 무언가, 그것은 넓은 문자열을 출력하지 않습니다! –
어떤 플랫폼과 컴파일러를 사용하고 있습니까? – hlovdal