我必须在 C 中使用 ncurses 绘制一个框;
首先,为了简单起见,我定义了一些值:
#define RB "\e(0\x6a\e(B" (ASCII 188,Right bottom, for example)
我在 Ubuntu 上使用 gcc 编译,使用
-finput-charset=UTF-8
旗帜。但是,如果我尝试使用 addstr 或 printw 进行打印,则会得到六进制代码。
我做错了什么?
最佳答案
ncurses
定义值 ACS_HLINE
, ACS_VLINE
, ACS_ULCORNER
, ACS_URCORNER
, ACS_LLCORNER
和 ACS_LRCORNER
.您可以在 addch
中使用这些常量。和 friend ,这应该会导致您看到预期的框字符。 (还有更多 ACS 字符;您可以在 man addch
中找到完整列表。)ncurses
需要知道它在绘制什么,因为它需要始终准确地知道光标在哪里。输出控制台控制序列不是一个好主意;如果 ncurses 知道如何处理序列,它就有自己的特征抽象,您应该使用该抽象。 ACS(“替代字符集”)定义是这些抽象之一。
关于c - 使用 ncurses 在 C 中打印 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34538814/