如何使用 ncurses 库在 C++ 中为 mac 打印特殊字符
How to print special characters in c++ for mac using ncurses libarary
现在,我想在 c++ 中为 mac(mojava, 10.14.4) 打印特殊字符,但是这些字符在我的 mac 书中被破坏了。
我安装了 brew install ncurses
和 brew link ncurses
等 ncurses。可以打印w英文如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
对于 mac(Mojave,10.14.4)的 clang++,这似乎适用于 c++。我认为它使用的是 mac curses 而不是 brew 安装的 ncurses。看起来它需要区域设置:setlocale(LC_ALL, "");
对我来说,这清除了屏幕并显示:
你好世界
████████╗███████╗████████╗██████╗ ██╗███████╗
编译命令:
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;
}
现在,我想在 c++ 中为 mac(mojava, 10.14.4) 打印特殊字符,但是这些字符在我的 mac 书中被破坏了。
我安装了 brew install ncurses
和 brew link ncurses
等 ncurses。可以打印w英文如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
对于 mac(Mojave,10.14.4)的 clang++,这似乎适用于 c++。我认为它使用的是 mac curses 而不是 brew 安装的 ncurses。看起来它需要区域设置:setlocale(LC_ALL, "");
对我来说,这清除了屏幕并显示:
你好世界 ████████╗███████╗████████╗██████╗ ██╗███████╗
编译命令:
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;
}