Как сделать историю команд в консольном приложении?

Я хочу сделать интерактивное консольное приложение, которое позволяет вводить команды в цикле. Например, пользователь вводит «поиск», и программа находит некоторые данные и выводит их на экран. Затем программа ожидает следующей команды (это может быть поиск, выход или другое). Для удобства пользователя я хочу, чтобы моя программа поддерживала историю команд (как в терминале, когда нажимаются стрелки вверх и вниз на клавиатуре). Но я не могу понять, как это сделать, потому что я не знаю, как печатать текст, который можно прочитать с помощью 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 ++

Ответы на вопрос(2)

Ваш ответ на вопрос