c++ - 哪里应该使用ncurses刷新()?

标签 c++ linux loops ncurses

下面的代码启动时不输出任何内容。当我输入 1,2,3 时,它会打印以下内容:

1Enter the value of argv[1]:49
2Enter the value of argv[2]:50
3Enter the value of argv[3]:51

我很困惑在使用循环时应该将refresh()放在哪里。我正在尝试实现类似于 for 循环内的注释的功能。

int main()
{
    initscr();
    int argv[3];
    int argvLen = sizeof(argv)/sizeof(*argv);

    for (int i=0; i<argvLen; i++)
    {
        int n = getch();
        printw("Enter value of argv[%d]: %d \n", i+1, n);
        argv[i] = n;
        refresh();

        //cout << "Enter value of argv[" << i+1 << "]:" << endl;
        //cin >> argv[i];
    }

    endwin();
    return 0;
}

最佳答案

getch() 返回一个字符,例如 '1''2''3'。它们的整数值为 49、50、51。如果您需要整数值,则应减去 '0'

int n = getch() - '0';

请注意,这只适用于数字(0 到 9)。如果您输入其他内容,它不会给您预期的答案,因此您可能需要在其中添加额外的检查。

关于c++ - 哪里应该使用ncurses刷新()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18609118/

相关文章:

javascript - 批处理文件 > Javascript > WinSCP > 检查文件是否存在

python - Plumi/Plone 构建过程中的语法错误

django - Django:For循环迭代表单字段

c++ - 模板和 std::numeric_limits

c++ - 使用 CUDA/自定义语言和 $(eval) 规则创建的 automake

c++ - 为什么下面的代码不能用 gcc 编译但用 clang 编译得很好

python - 如何在 Python 中让一个 Action 每分钟发生一次

c# - 如何从 QByteArray 获取结构

php - Debian:使用 bash 找出 CPU 使用率

javascript - 单击按钮将代码添加到JS