문제

Xcode 프로젝트에서 사용하는 경우 std::cout 콘솔에 글을 쓰려면 출력이 좋습니다.

그러나 내가 사용하는 경우 std::wcout 나는 출력이 없다.

나는 이것이 C ++에서 가시적인 문제라는 것을 알고 있으며, Xcode 케이스에서 특정 솔루션을 찾기 위해 검색을하고 있습니다. 제가 제안되었다는 것을 알게 된 몇 가지는 다음과 같습니다.


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

그리고


    std::setlocale(LC_ALL, "");

이들 중 어느 것도 아무런 차이가 없었습니다. 다음 몇 주 동안 Facets API를 공부하기 위해 자신을 사임하기 전에 콘솔에 글을 쓸 수 있다고 생각했습니다.

업데이트

내가 가진 문제의 이유는 실제로 인쇄하려는 문자열의 특정 인코딩과 관련이 있다고 생각합니다.

문자열 문자 만 보내면 L"my string" syntax 효과가있다! 이것은 Little Endian 인코딩 UTF32를 사용하는 것 같습니다.

그러나 NSUTF32BigendianStringEncoding 인코딩을 사용하여 목표 C ++ 코드에서 전달 된 문자열과 이것을 혼합했습니다. 문제를 일으키는 인코딩의 혼합입니다.

이 문제가 폐쇄된다고 생각할 수 있다고 생각합니다. 읽어 주셔서 감사합니다.

도움이 되었습니까?

해결책

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.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top