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

C++ 使用Ncurses(C+;+;)时不打印宽字符,c++,c++14,ncurses,extended-ascii,widechar,C++,C++14,Ncurses,Extended Ascii,Widechar,以下代码无法打印宽字符: #include <ncurses.h> using namespace std; int main(void){ initscr(); printw("█"); getch(); endwin(); } 有人能告诉我问题出在哪里吗? 谢谢8)您没有初始化区域设置。报告指出: 库使用调用程序已初始化的区域设置。 这通常是通过设置语言环境来完成的: setlocale(LC_ALL,”) 如果未初始化区域设置,库将假定 如ISO-8859

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

#include <ncurses.h>

using namespace std;

int main(void){
  initscr();
  printw("█");
  getch();
  endwin();
}
有人能告诉我问题出在哪里吗?
谢谢8)

您没有初始化区域设置。报告指出:

库使用调用程序已初始化的区域设置。 这通常是通过设置语言环境来完成的:

setlocale(LC_ALL,”)

如果未初始化区域设置,库将假定 如ISO-8859-1中所述可打印,用于某些遗留程序。 您应该初始化区域设置,而不是依赖于 未设置区域设置时的库


如果使用相应的转义序列(
\u2588
)而不是将字符嵌入源代码,会发生什么情况?为什么编译命令中是
-lncursesw
,而不是
-lncurses
?另外,我认为@Quentin是对的,您应该明确使用特殊字符,因为根据您的代码所在的文本文件的编码,它会导致问题。@BenjaminBarrois显然。@Quentin我也有同样的问题。这段代码可以在我的桌面上正确编译和运行,但每隔一台机器它都无法正确显示字符。所有的安装看起来都是一样的。。。在桌面上时,我必须使用
-lncursesw
进行编译,否则我会遇到当前的问题。建议的方法没有帮助,因为这两种库配置的行为确实不同。
g++ -std=c++14 widechartest.cpp -o widechar -lncursesw