Я видел много постов по этому поводу, но ни один из них не ответил на вопрос, они приводят примеры, которые не работают, все, что вы получаете, — это больше сообщений об ошибках или просто отсылаемых по другим касательным. ncurses постоянно упоминается, но ни один из примеров, которые я нашел, не работал на OS X, несмотря на претензии. Либо примеры неверны, либо они на самом деле не проверены перед публикацией. Я хотел бы добавить комментарий к этим сообщениям, но, поскольку я новый пользователь, мне не разрешается спрашивать о них что-либо, что также смешно, поскольку это будет гораздо проще, чем начинать новую тему.
Я хочу, чтобы программа задавала вопрос, ждала ввода от пользователя и читала каждую нажатую клавишу без нажатия клавиши возврата, несколько лет назад я был достаточно опытным в Turbo Pascal, и это было так легко сделать, как и большинство вещей в Pascal, будет просто работать … Я думал, что C ++ будет похожим, вместо этого вы просто постоянно сталкиваетесь с противоположными платформными примерами использования и примерами, которые никогда не компилируются.
Я использую CLion 2017.2.2 на OS X.
Вот пример кода для 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})
Других решений пока нет …