我如何在C++中打印这些UTF-8字符?
我如何在C++中打印这些UTF-8字符?
sprintf("%c%c%c\n", 0xE2, 0x99, 0xA0);
嗯,你知道这是可能的,因为你的浏览器可以渲染它们。在Windows上,你可以使用charmap.exe小程序来发现它们的Unicode代码点:
挑战在于让C/C++程序显示它们。除非你使用类似Qt或wxWidgets这样的跨平台UI库,否则以任何非平台特定的方式都不可能实现。在Windows图形用户界面程序中,你可以在WM_PAINT消息处理程序中这样做:
case WM_PAINT: {
hdc = BeginPaint(hWnd, &ps);
HFONT hFont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, L"Arial Unicode MS");
HGDIOBJ oldFont = SelectObject(hdc, hFont);
RECT rc = {0, 0, 666, 16};
DrawTextEx(hdc, L"\x2660\x2663\x2665\x2666", -1, &rc, DT_LEFT, 0);
SelectObject(hdc, oldFont);
DeleteObject(hFont);
EndPaint(hWnd, &ps);
}
break;