【问题标题】:C++ read user input without pressing return (Mac OS X), same as readkey in Turbo PascalC++ 读取用户输入而不按回车 (Mac OS X),与 Turbo Pascal 中的 readkey 相同
【发布时间】:2018-10-19 12:32:13
【问题描述】:

我看过很多关于这个的帖子,但没有一个回答这个问题,他们给出了不起作用的例子,你得到的只是更多的错误消息,或者只是在其他切线被发送。 ncurses 不断被提及,但我在 OS X 上找到的示例都没有,尽管声称。这些示例要么是错误的,要么在发布之前没有经过实际测试。我会为这些帖子添加评论,但由于我是新用户,所以我不能询问任何关于它们的内容,这也很荒谬,因为这比必须开始一个新主题要容易得多。

我希望程序问一个问题,等待用户输入并读取每个按下的键而不按下返回键,几年前我相当精通 Turbo Pascal,这很容易做到,就像大多数事情一样帕斯卡,它会工作的......我认为 C++ 会是相似的,相反,你只是不断地面临相反的平台特定用例,以及永远不会编译的示例。

我在 OS X 上使用 CLion 2017.2.2。

【问题讨论】:

标签: c++ turbo-pascal readkey


【解决方案1】:

这是 ncurses 的示例代码。我在linux下测试过它,但它也应该在mac os下工作。

#include <stdlib.h>
#include <stdio.h>
#include <curses.h>


int main(void) {
    WINDOW * mainwin;

    if ( (mainwin = initscr()) == NULL ) {
          fprintf(stderr, "Error initialising ncurses.\n");
          exit(EXIT_FAILURE);
    }

    mvaddstr(13, 33, "Input: ");
    refresh();
    char input[2];
    input[0] = getch();
    input[1] = '\0';
    mvaddstr(15, 33, "Your Input is: ");
    mvaddstr(15, 48, input);
    mvaddstr(17, 33, "Press any key to exit");
    getch();

    delwin(mainwin);
    endwin();
    refresh();

    return EXIT_SUCCESS;
}

有必要对 ncurses 进行链接。我使用 cmake 来管理我的构建:

cmake_minimum_required(VERSION 3.5)
project(ncurses)
set(CMAKE_CXX_STANDARD 11)

set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra")

find_package(Curses REQUIRED)

add_executable(ncurses main.cpp)
target_link_libraries(ncurses ${CURSES_LIBRARIES})

【讨论】:

  • 似乎有些问题出在 CMakeLists.txt 上,使用你的解决了上述代码的初始错误。但现在我得到:“错误打开终端:未知。进程以退出代码 1 完成”,显示在内置 CLion 终端中,这是我以前遇到的问题,但 CLion 设置中的终端设置为默认操作系统据我所知,X 终端,所以不确定这里的问题是什么。
  • NCurses 不适用于 CLion 终端。您必须使用系统终端启动程序
  • 啊,好吧,我想我现在记得了,这整个体验似乎有点临时......现在工作正常,谢谢。 90 年代的软件实际上看起来好多了
  • 如果我不能在内置的 clion 控制台/终端中使用 ncurses,我应该如何调试?有没有办法在终端外部调试?
  • Clion 使用 gdb。您可以在终端中使用 gdb 或将 Clion 连接到您的进程
猜你喜欢
  • 2012-12-23
  • 1970-01-01
  • 2011-07-12
  • 2017-02-19
  • 2015-07-19
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多