【发布时间】:2021-12-16 14:47:42
【问题描述】:
目前使用 WSL2、C++20、预处理器指令 #define _XOPEN_SOURCE_EXTENDED 1、#include <panel.h> 和标志 -lpanelw -lncursesw。
当我尝试在 ncurses 中添加“Red Heart ❤️”字符时,使用下面提供的代码会导致终端窗口出现奇怪的错误,尤其是当我用框将其封装时。我的 MacBook 也遇到了同样的问题。当我将 unicode 字符放在字符串 "❤️" 中时,它给了我一个 const char[7],而不是许多其他给出 const char[5] 的 unicode 字符。这可能与错误的原因有关吗?如果有人能给我一些关于这个问题的见解,我将不胜感激。
(忽略部分图片右下角的光标,这只是VS Code中终端的光标问题)。
1 颗红心:
2 红心:
2 紫心:
代码:
#define _XOPEN_SOURCE_EXTENDED 1
#include <panel.h>
#include <iostream>
int main() {
setlocale(LC_ALL, "");
initscr();
raw();
noecho();
curs_set(0);
refresh();
WINDOW *win {newwin(8, 16, 10, 10)};
box(win, 0, 0);
mvwaddwstr(win, 1, 1, L"❤️");
mvwaddwstr(win, 1, 5, L"❤️");
wrefresh(win);
getch();
endwin();
}
【问题讨论】:
-
在新的 Windows 终端中是否会发生同样的错误? github.com/microsoft/terminal
-
Windows 终端中似乎没有出现该错误。有没有办法为其他有bug的终端解决这个问题?