Как сделать историю команд в консольном приложении?
Я хочу сделать интерактивное консольное приложение, которое позволяет вводить команды в цикле. Например, пользователь вводит «поиск», и программа находит некоторые данные и выводит их на экран. Затем программа ожидает следующей команды (это может быть поиск, выход или другое). Для удобства пользователя я хочу, чтобы моя программа поддерживала историю команд (как в терминале, когда нажимаются стрелки вверх и вниз на клавиатуре). Но я не могу понять, как это сделать, потому что я не знаю, как печатать текст, который можно прочитать с помощью scanf, std :: getline, std :: cin и так далее. Так кодstd::cin << "hello";
не скомпилировано (нет совпадения для оператора "<<" в "std :: cin <<" привет ""). функцияfprintf(stdin, "hello");
ничего не печатает и scanf не может прочитать это напечатанное сообщение. Очевидно, чтоstd::getline(std::cin, str);
а такжеscanf("%s", s);
а такжеgets(s)
и так далее не может прочитать текст, который был выведенprintf
или жеstd::out
, Итак, вопрос: как я могу напечатать текст на консоли, который также будет вstdin
(std::cin
)? Или, может быть, есть более элегантный способ организации истории команд?
Постскриптум Я также думал об имитации нажатия кнопки, чтобы напечатать нужный текст, но я надеюсь, что есть лучший способ сделать историю команд
P.P.S. Я использую Linux и C ++