c++ - eclipse ncurses 和 xterm,打印未知字符

标签 c++ c eclipse ncurses xterm

我遇到了 打开终端时出错:未知。 使用 ncurses 和 Eclipse Luna。

因此安装了 xterm 并在 Run/Debug Configurations > Environment 中添加 TERM=xterm

现在,当我运行以下简单的“Hello World”应用程序时,Eclipse 控制台中打印出一些奇怪的字符:

enter image description here

代码:

#include <stdio.h>
#include <ncurses.h>

int main() {
    initscr();                 /* Start curses mode     */
    printw("Hello World !!!"); /* Print Hello World    */
    refresh();                 /* Print it on to the real screen */
    getch();                   /* Wait for user input */
    endwin();                  /* End curses mode    */

    return 1;
}

这些字符是什么?以及如何删除它们?

最佳答案

这些字符是 initscr() 输出以完成其工作的内容。

终端知道不显示这些字符并以特殊方式解释它们。由于 Eclipse 控制台不是终端,因此它没有任何概念。

如果你想让你的程序在终端和非终端上都工作,你需要检查你的标准输出是否是终端,如果不是,避免使用 ncurses 特定的函数。参见 man isatty

如果您只需要您的程序在终端中运行,就不要使用 Eclipse 控制台。参见 this question and its answer设置说明。

关于c++ - eclipse ncurses 和 xterm,打印未知字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26998910/

相关文章:

c++ - 使用递归计算一个函数的高度和大小?

c++ - 由模板成员函数引起的错误 C2275。这段代码有错吗?

java - 如何读取JSON数据文件

c - printf 上错误的 clock_t 输出值

c - 在 C 中使用 fgets 跳过空行

eclipse - 在 BIRT 中呈现来自多个文件夹的报告

eclipse - Eclipse的重做键盘快捷键

c++ - CMake:CMAKE_REQUIRED_LIBRARIES 中的库顺序,用于在配置时测试最小程序

c++ - 为什么 std::move 不在默认 move 构造函数中将源变量更改为默认值?

c - C中的顺序输入