以下代码无法打印宽字符:
#include <ncurses.h>
using namespace std;
int main(void){
initscr();
printw("█");
getch();
endwin();
}
虽然所有库都已正确安装,但此代码似乎适用于某些计算机而非其他计算机。 (终端能够显示扩展字符!)
我用以下方法编译了这个:
g++ -std=c++14 widechartest.cpp -o widechar -lncursesw
有人能让我知道问题是什么吗? 谢谢8)
答案 0 :(得分:1)
您没有初始化区域设置。 manual page指出了这一点:
库使用调用程序初始化的语言环境。 通常使用
来完成setlocale
:
setlocale(LC_ALL, "");
如果未初始化语言环境,则库将假定该字符 可以在ISO-8859-1中打印,以使用某些遗留程序。 您应该初始化区域设置,而不是依赖于特定的细节 尚未设置语言环境时的库。