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

问题描述 投票:-1回答:1

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

我安装了诸如brew install ncursesbrew link ncurses之类的ncurses。它可以打印英文,如Hello World,但████████╗███████╗████████╗██████╗ ██╗███████╗等特殊字符被打破。

源代码

setup

initscr();
clear();
noecho();
cbreak();
curs_set(0);

work

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++ macos encoding special-characters ncurses
1个回答
0
投票

这似乎适用于使用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.