我想问一下在C ++的控制台窗口中编写国际象棋unicode字符的最简单方法是什么? (♙♘♗♖♕♔♟♞♝♜♛♚)他们是"杂项符号"的一部分。以unicode阻止。 https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode
我也想打印方形大小的字符,现在我的棋盘不是正方形,因为每个字符都是矩形而不是正方形。
能够用国际象棋棋盘下方的普通非方形字符书写也很好,但这可能是不可能的?要在同一控制台窗口中混合使用不同的字体/格式?
好的,先谢谢! :)
答案 0 :(得分:1)
问题的第一部分输出这些字符,与平台有关。 Linux控制台通常使用UTF-8,如果是这种情况,您可以将字符编码为UTF-8并将其写入标准输出。在Windows上,您可以使用Console API(WriteConsole功能):
HANDLE handle = GetStandardHandle(STD_OUTPUT_HANDLE);
DWORD written = 0;
// explicitly call the wide version (which always accepts UTF-16)
WriteConsoleW(handle, L"\u2658", 1, &written, NULL);
一个难以解决的警告是,您需要一个包含这些字符的控制台字体。
要获取方格,这取决于有关控制台呈现文本方式的许多细节。如果它使用字体替换,那么文本实际上可能不是等宽字体。
现在,如果你有一个带有这些字符的控制台字体,而如果那个字体是等宽的,那么你可以通过添加一些间距来绘制一块方形板人物之间。您可以使用▌
U + 258C - LEFT HALF BLOCK 等块元素来绘制chequerboard:▌♘▐█▌ ▐
。