现在,我想在c ++ for mac(mojave,10.14.4)中打印特殊字符,但这些字符在我的mac书中被破坏了。
我安装了诸如brew install ncurses
和brew link ncurses
之类的ncurses。它可以打印英文,如Hello World
,但████████╗███████╗████████╗██████╗ ██╗███████╗
等特殊字符被打破。
initscr();
clear();
noecho();
cbreak();
curs_set(0);
int startX = 0;
int startY = 0;
mvprintw(startY++, startX, "Hello World");
mvprintw(startY, startX, "████████╗███████╗████████╗██████╗ ██╗███████╗\n");
Hello World
?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~U~W?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H
?~U~W?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~U~W?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H
?~U~W ?~V~H?~V~H?~U~W?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~V~H?~U~W
这似乎适用于使用clang ++ for mac的c ++(mojava,10.14.4)。我认为它使用的是mac curses而不是brew安装的ncurses。看起来它需要设置区域设置:setlocale(LC_ALL, "");
对我来说,这清除了屏幕并显示:
HelloWorld████████╗███████╗████████╗██████╗██╗███████╗
编译cmd: clang ++ -Wall -Wextra -Weverything -lncurses * .cpp -o prg
main.cpp代码:
#include <curses.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "");
initscr(); /* Start curses mode */
clear();
noecho();
cbreak();
curs_set(0);
int startX = 0;
int startY = 0;
mvprintw(startY++, startX, "Hello World");
mvprintw(startY, startX, "████████╗███████╗████████╗██████╗ ██╗███████╗\n");
refresh(); /* Print it on the real screen */
getch(); /* Wait for user input */
endwin(); /* End curses mode */
return 0;
}