小编ant*_*oev的帖子

在 Windows 控制台中显示 unicode 棋子

我一直在用 C++(使用 MVS2010)开发一个控制台国际象棋游戏,我似乎遇到了一个我自己无法解决的问题。问题是我需要在控制台中显示以下棋子:http : //en.wikipedia.org/wiki/Chess_symbols_in_Unicode

我当然浏览了大量的论坛、文章和文档,但仍然没有完成任务。我知道某些字符(特别是我需要的字符)无法使用 Windows 控制台提供的字体显示。但是控制台只支持几种字体:consolas 和 lucida 控制台。最后一个足以显示大量字符,但不是全部。下面的片段是最接近我需要的片段之一:

#include <Windows.h>
#include <wchar.h>
int main()
{
    UINT oldcp = GetConsoleOutputCP();
    SetConsoleOutputCP(CP_UTF8);

    wchar_t s[] = L"\x266B";
    int bufferSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
    char* m = new char[bufferSize]; 
    WideCharToMultiByte(CP_UTF8, 0, s, -1, m, bufferSize, NULL, NULL);
    wprintf(L"%S", m); 
    delete[] m; 

    SetConsoleOutputCP(oldcp);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当使用它显示以下字符时,它起作用:\x266B(仅在使用 Lucida 控制台时)。但是当我尝试显示 \x265B 时,它会打印一个空方块而不是棋子。这是国际象棋字符的链接:http : //unicode-table.com/ru/#geometric-shapes

以下代码片段更加清晰和小巧,其行为与上面的类似:

#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <Windows.h>
int main(){

    //_setmode(_fileno(stdout), …
Run Code Online (Sandbox Code Playgroud)

c++ unicode console chess visual-studio

6
推荐指数
1
解决办法
3743
查看次数

标签 统计

c++ ×1

chess ×1

console ×1

unicode ×1

visual-studio ×1