在尝试使用ncurses时,我试图使用ANSI转义序列来控制输出文本的颜色,但是printw()及其替代方法都忽略了我的ANSI序列。我必须使用ANSI,因为我将打印使用它们的另一个程序的输出。如何使printw()了解它们?
我正在使用g++ ansitest.cpp -lncurses
进行编译,并且尝试比较printf
和printw
。与printw不同,Printf可以正常工作。
这是我的ansitestncurses.cpp
int main(int argc, char *argv[]) {
initscr();
raw();
keypad(stdscr, TRUE);
noecho();
printw("\033[0;31m");
printw("HELLO");
getch();
endwin();
return 0;
}
这是我的ansitest.cpp
int main(int argc, char *argv[]) {
printf("\033[0;31m");
printf("HELLO");
}
我希望结果是一样的,但事实并非如此。 Printw只打印显示的字符,没有颜色。
Printf:
HELLO
(全部已读)
打印:
^[[0;31mHELLO
(无颜色)