C++ 在不按 return (Mac OS X 的情况下读取用户输入,与 Turbo Pascal 中的 readkey 相同
C++ read user input without pressing return (Mac OS X), same as readkey in Turbo Pascal
我看过很多关于这个的帖子,但是 none 他们回答了这个问题,他们给出了不起作用的例子,你得到的只是更多的错误信息,或者只是在其他切线处发送。 ncurses 不断被提及 none 我发现在 OS X 上工作的示例,尽管有声明。这些示例要么是错误的,要么在发布之前没有经过实际测试。我会在这些帖子中添加评论,但由于我是新用户,我不能就它们提出任何问题,这也很荒谬,因为这比开始一个新主题要容易得多。
我想让程序问一个问题,等待用户输入并在不按下 return 键的情况下读取每个按下的键,几年前我相当精通 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] = '[=10=]';
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;
}
有必要link对抗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})
我看过很多关于这个的帖子,但是 none 他们回答了这个问题,他们给出了不起作用的例子,你得到的只是更多的错误信息,或者只是在其他切线处发送。 ncurses 不断被提及 none 我发现在 OS X 上工作的示例,尽管有声明。这些示例要么是错误的,要么在发布之前没有经过实际测试。我会在这些帖子中添加评论,但由于我是新用户,我不能就它们提出任何问题,这也很荒谬,因为这比开始一个新主题要容易得多。
我想让程序问一个问题,等待用户输入并在不按下 return 键的情况下读取每个按下的键,几年前我相当精通 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] = '[=10=]';
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;
}
有必要link对抗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})