搜索了很多,发现curs_set()
或putp(tigetstr() )
可用于隐藏/显示tty游标。我想尽量减少对其他库的依赖,因此我想知道如果不使用libtinfo
/ libncurses
或调用外部命令(如setterm
)我是否可以这样做, tput
)。是否有ioctl()
命令?
答案 0 :(得分:2)
基本上有三种方法:
如果您的程序仅在控制台终端上执行(例如,因为机器未与网络连接),或仅由大多数常见终端执行,则可以采用UTF-8字符集和{{3} }。
这意味着要隐藏光标,请将"\033[?25h"
打印到终端,然后"\033[?25l"
显示光标。
要获得正确的终端支持,请使用terminfo库。
您可以直接读取terminfo数据库,但这样做毫无意义,因为如果安装了它,您还可以使用curses函数来访问它(ANSI escape codes)。
然后,您还应该让您的程序能够识别区域设置,并使用例如tgetent()
/tgetnum()
/tgetflag()
在字符集之间进行转换,而不是假设为UTF-8。
使用curses或ncursesw(具有广泛的字符支持)。