宽字符在使用Ncurses时不打印(C ++)

时间:2018-01-26 17:28:40

标签: c++ c++14 ncurses extended-ascii widechar

以下代码无法打印宽字符:

#include <ncurses.h>

using namespace std;

int main(void){
  initscr();
  printw("█");
  getch();
  endwin();
}

虽然所有库都已正确安装,但此代码似乎适用于某些计算机而非其他计算机。 (终端能够显示扩展字符!)

我用以下方法编译了这个:

g++ -std=c++14 widechartest.cpp -o widechar -lncursesw

有人能让我知道问题是什么吗? 谢谢8)

1 个答案:

答案 0 :(得分:1)

您没有初始化区域设置。 manual page指出了这一点:

  

库使用调用程序初始化的语言环境。   通常使用 setlocale

来完成      

setlocale(LC_ALL, "");

     

如果未初始化语言环境,则库将假定该字符   可以在ISO-8859-1中打印,以使用某些遗留程序。   您应该初始化区域设置,而不是依赖于特定的细节   尚未设置语言环境时的库。