[LINUX]利用Ncursesw编写支持中文的终端程序
[LINUX]利用Ncursesw编写支持中文的终端程序
姚思远 发表于4年前
[LINUX]利用Ncursesw编写支持中文的终端程序
  • 发表于 4年前
  • 阅读 751
  • 收藏 3
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Ncurses 提供字符终端处理库,包括面板和菜单,能够写出有非常漂亮界面的终端程序。然而,Ncurses库对于中文的支持并不好。这时,我们就需要支持宽字符的Ncursesw库。以下内容根据互联网整理。

1. Ncursesw库的安装与使用

Ncurses库的安装(Ubuntu):

查看相关软件包

sudo apt-cache search ncursesw

安装ncursew必须软件包

sudo apt-get install libncurses5 libncurses5-dbg libncurses5-dev
使用Ncursesw库时,需要包含头文件 ncurses.h,没错,头文件没有改变。相应地,相关函数的使用也没有改变。

然而,在编译源文件时,采用选项-lncursesw替代原用-lncurses。

2. 使程序支持中文字符

在调用initscr()函数前,需要首先调用setlocale(LC_ALL,"")设置终端环境。具体请参见

man 3 setlocale

在man page中,我们还可以知道,为了使用setlocale这个函数,需要包含头文件locale.h。

如果没有这个头文件,可尝试安装libicu-dev软件包。


演示:

#include <ncurses.h>
#include <locale.h>

int main(void)
{
  setlocale(LC_ALL,"");
  initscr();
  attron(A_BOLD);
  printw("成功支持中文字符");
  attroff(A_BOLD);
  refresh();
  getch();
  endwin();

  return 0;
}


2014.4.14补充:

在linux系统中,一般都要使用ncursesw库来实现中文输出。但是在Mac OS X中,只有ncurses库,利用上述代码同样可以输出中文。但是注意:无论使用那种情况,必须使用setlocale(LC_ALL,""),否则都有可能带来乱码!

标签: Linux Ncurses
共有 人打赏支持
粉丝 0
博文 8
码字总数 6347
×
姚思远
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: