C ++ читает пользовательский ввод без нажатия клавиши возврата (Mac OS X), так же, как кнопка чтения в Turbo Pascal

Я видел много постов по этому поводу, но ни один из них не ответил на вопрос, они приводят примеры, которые не работают, все, что вы получаете, — это больше сообщений об ошибках или просто отсылаемых по другим касательным. ncurses постоянно упоминается, но ни один из примеров, которые я нашел, не работал на OS X, несмотря на претензии. Либо примеры неверны, либо они на самом деле не проверены перед публикацией. Я хотел бы добавить комментарий к этим сообщениям, но, поскольку я новый пользователь, мне не разрешается спрашивать о них что-либо, что также смешно, поскольку это будет гораздо проще, чем начинать новую тему.

Я хочу, чтобы программа задавала вопрос, ждала ввода от пользователя и читала каждую нажатую клавишу без нажатия клавиши возврата, несколько лет назад я был достаточно опытным в Turbo Pascal, и это было так легко сделать, как и большинство вещей в Pascal, будет просто работать … Я думал, что C ++ будет похожим, вместо этого вы просто постоянно сталкиваетесь с противоположными платформными примерами использования и примерами, которые никогда не компилируются.

Я использую CLion 2017.2.2 на OS X.

0

Решение

Вот пример кода для 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})
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]