c++ - 如何使用 ncurses 库在 c++ for mac 中打印特殊字符

标签 c++ macos encoding special-characters ncurses

现在,我想在 mac(mojava, 10.14.4) 的 c++ 中打印特殊字符,但这些字符在我的 mac 书中被破坏了。

我安装了 ncurses,例如 brew install ncursesbrew link 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

最佳答案

这似乎适用于 c++ 和 clang++ for mac(Mojave, 10.14.4)。我认为它使用的是maccurses而不是brew安装的ncurses。看起来它需要区域设置: setlocale(LC_ALL, ""); 对我来说,这会清除屏幕并显示:

Hello World ████████╗███████╗████████╗██████╗██╗███████╗

编译cmd:
clang++ -Wall -Wextra -Weverything -lncurses *.cpp -o prg

ma​​in.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++ - 如何使用 ncurses 库在 c++ for mac 中打印特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55623322/

相关文章:

C++ Trace Logging Question, fstream access violation 问题

c# - 将 scipy.ndimage.filters correlate1d 从 Python 移植到 C++ 或 C#

c++ - 如何避免重复初始化 .mex(matlab 编译代码)?

node.js - 如何在Electron的MacOS菜单栏的右侧添加图标?

objective-c - Mac 相当于 .Net SerialPort.ReadExisting()

javascript - 你什么时候应该使用转义而不是 encodeURI/encodeURIComponent?

c# - 从 SQLite 数据库读取非 Unicode、非英语文本

c++ - Makefile 总是编译某些文件

objective-c - 在 Obj-C 中,如何以编程方式设置 Mac OS X 中文件的默认 "open with"属性

encoding - 将 `dir`输出重定向到文件后,编码不正确