Как напечатать специальные символы в C ++ для Mac, используя библиотеку ncurses - PullRequest
0 голосов
/ 11 апреля 2019

Теперь я хочу напечатать специальные символы на c ++ для mac (mojava, 10.14.4), но эти символы не работают в моей книге mac.

Я установил ncurses, такие как brew install ncurses и brew 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

1 Ответ

0 голосов
/ 12 апреля 2019

Кажется, это работает для c ++ с clang ++ для mac (mojava, 10.14.4). Я думаю, что он использует проклятия Mac, а не варево, установленное ncurses. Похоже, что нужно установить языковой стандарт: setlocale(LC_ALL, ""); Для меня это очистило экран и отобразило:

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

Компиляция 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;
}
...