2008-11-09 7 views
2

XCode 프로젝트에서 std::cout을 콘솔에 쓰면 출력이 정상입니다.std :: wcout을 XCode의 콘솔 창에

그러나 std::wcout을 사용하면 출력이 표시되지 않습니다.

이것이 C++의 어려운 문제라는 것을 알고 있으며 XCode의 경우 특정 솔루션을 찾으려고 노력하고 있습니다. 나는 말하자면 작동합니다 제안 된 것을 발견 것들의 몇 :


    std::cout.imbue(std::locale("")); 


    std::setlocale(LC_ALL, ""); 

이 중 어느 것도 어떤 차이를 만들었습니다. 전에 콘솔에 쓸 수있는 패싯 API를 연구하는 다음 몇 주를 쓰는 것에 사념을 쏟기 전에 나는 여기에 존경받는 테디를 확인할 것이라고 생각했습니다.

[업데이트]

는 내가 가지고 왔던 문제에 대한 이유는 내가 인쇄하기 위해 노력하고있어 문자열의 일부 특정 인코딩 할 사실이라고 생각합니다.

문자열 리터럴을 보내면 L"my string" syntax을 사용하면 효과가 있습니다! 이것은 UTF32 - little endian 인코딩을 사용하고있는 것 같습니다.

그러나이 코드는 NSUTF32BigEndianStringEncoding 인코딩을 사용하는 Objective C++ 코드에서 전달 된 문자열과 혼합되었습니다. 문제를 일으키는 것은 인코딩의 혼합입니다.

나는이 문제를 해결할 수 있다고 생각합니다. 읽어 주셔서 감사합니다.

답변

3

std :: wcout은 std :: cout처럼 작동해야합니다. 내 MAC에 잘

다음 작품 :

#include <iostream> 

int main() 
{ 
    std::cout << "HI" << std::endl; 
    std::wcout << L"PLOP" << std::endl; 
} 

어쩌면 (일부 코드가 좋았을 것이지만) 그 당신이 버퍼를 플러시하지 않기 때문에. std :: cout 및 std :: wcout이 버퍼링된다는 것을 기억하십시오. 즉, 버퍼가 채워 지거나 버퍼를 명시 적으로 플러시 할 때까지 출력이 콘솔에 푸시되지 않습니다. 답장을

std::wcout << flush(); 
// or 
std::wcout << endl; // Those also puts a '\n' on the stream. 
+0

감사 :

당신과 함께 버퍼를 플래시 할 수 있습니다. 내 문제에 대한 이유를 발견했다고 생각합니다. 지금 내 질문을 업데이트합니다. – philsquared