이 기본적인 예입니다. ,
는
대신 Windows 콘솔의 기능을 사용할 수 있습니다 일반적으로 유니 코드 문자를 표시하려면, 또는
는 표준 데이터는 유니 코드 스트림을 설정 (마이크로 소프트 확장을 참조 _setmode
)을 넓은 스트림을 사용 또는
예 : 원하는 텍스트가있는 텍스트 파일을 표시합니다 (예 : UCS-2로 인코딩됩니다.
예 1 : Windows 콘솔 기능을 사용.
코드 : 심지어 예와 윈도우 8.x에서, 대신 전당포 기호의 사각형을 생성 가능성이 가장 높은 것입니다 일반 Windows 콘솔이 실행
#undef UNICODE
#define UNICODE
#include <windows.h>
#include <string>
namespace console {
using std::wstring;
const HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
void write(const wstring& text)
{
if(text.length() == 0) { return; }
DWORD n_chars_written = 0;
WriteConsole(output, &text[0], text.length(), &n_chars_written, 0);
}
}
auto main() -> int
{
console::write(L"Oh look, a \u2659!\n");
}
Lucida Console 글꼴. 콘솔 창 구현은 단순히 이러한 문자의 표시를 지원하지 않기 때문에 ’ s입니다. 캐릭터가 올바르게 저장되어 있습니다. Windows Write (표준 부속 프로그램)에 표시하지만, 일반 최종 사용자의 경우 ’은 실용적이지 않습니다.
간단한 해결책은 예를 들어. Console 콘솔 창 대체
그럼 멋진 탭을 얻을 수 있습니다. ;-)
H:\dev\test\so\0208>g++ using_console_api.cpp
H:\dev\test\so\0208>a
Oh look, a ♙!
H:\dev\test\so\0208>_
예 2 : 다양한 스트림을 사용.
코드 :
#include <assert.h>
#include <iostream>
#include <fcntl.h> // _O_WTEXT
#include <io.h> // _setmode, _isatty
namespace console {
struct Usage
{
Usage()
{
const int out_fileno = _fileno(stdout);
assert(_isatty(out_fileno));
_setmode(out_fileno, _O_WTEXT);
}
};
} // console
const console::Usage console_usage;
auto main() -> int
{
using namespace std;
wcout << L"Oh look, a \u2659!" << endl;
}
내가 한 번에, 아마도 원래는 MinGW의 g ++로, 하나는 정의 된 마이크로 소프트 라이브러리 확장을 얻기 위해 특별한 전 처리기 기호를 정의했다는 것을 기억합니다. 그러나 이것은 Nuwen 배포판에서 MinGW g ++ 4.9.1을 그대로 사용하여 잘 컴파일됩니다. 그리고 물론 Visual C++로도 잘 컴파일됩니다.
유효하지 않은 코드이므로 'void main'을 사용하지 마십시오. 따라서 독서하는 학생은 무의식적으로 복사 할 수 있습니다. –