我看过很多关于这个问题的帖子,但没有一个回答这个问题,他们给出了不起作用的例子,你得到的只是更多的错误消息,或者只是在其他切线处发送。 ncurses 不断被提及,但我发现的所有示例都没有在 OS X 上工作,尽管有这些声明。示例要么是错误的,要么是在发布之前没有实际测试。我会在这些帖子中添加评论,但由于我是新用户,我不允许询问有关它们的任何事情,这也是荒谬的,因为这比必须开始一个新主题要容易得多。
我希望程序提出一个问题,等待用户输入并在不按下返回键的情况下阅读每个按下的键,几年前我相当精通 Turbo Pascal,这很容易做到就像 Pascal 中的大多数事情一样,它会工作......我认为C++会是相似的,相反,您只是不断面临相反的平台特定用例以及从未编译的示例。
我在 OS X 上使用 CLion 2017.2.2。
下面是 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] = ' ';
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})