【发布时间】:2017-02-15 18:23:26
【问题描述】:
我正在使用 ncurses 为 Raspberry Pi 编写终端程序。我想在一个盒子周围添加一个阴影。我想使用mvaddch() 打印扩展字符,例如 char 233(上半框字符)。 mvaddch() 命令的语法是什么?还是有其他方法可以做到这一点?
【问题讨论】:
标签: gcc ncurses extended-ascii
我正在使用 ncurses 为 Raspberry Pi 编写终端程序。我想在一个盒子周围添加一个阴影。我想使用mvaddch() 打印扩展字符,例如 char 233(上半框字符)。 mvaddch() 命令的语法是什么?还是有其他方法可以做到这一点?
【问题讨论】:
标签: gcc ncurses extended-ascii
您可能指的是code page 866 之类的东西。 ncurses 将假定您的终端显示与locale encoding 一致的字符,这可能是UTF-8。所以(除非你想在你的程序中转换字符)要走的路是使用 Unicode 值。
Unicode 组织具有可用于查找特定代码的表,例如 ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP866.TXT。对于您的示例,相关行是
0xdf 0x2580 #UPPER HALF BLOCK
(因为 0xdf 是 223)。您将在调用函数 mvaddwstr 时使用 Unicode 0x2580,例如
wchar_t mydata[] = { 0x2580, 0 };
mvaddwstr(0,0, mydata);
(同名wadd_wch使用的数据结构更复杂)。
您必须链接到 ncursesw 库,当然还有 ncurses 手册页中提到的 initialize your program's locale using setlocale。
【讨论】: