Como fazer o histórico de comandos no aplicativo de console?
Eu quero fazer aplicação de console interativo, que permite inserir o comando em loop. Por exemplo, o usuário digita "pesquisa" e programa encontra alguns dados e os imprime na tela. Em seguida, o programa aguarda o próximo comando (que pode ser pesquisa, sair ou outro). Para a conveniência do usuário, quero que meu programa suporte o histórico de comandos (como no terminal, ao pressionar as setas para cima e para baixo no teclado). Mas não consigo perceber como fazer isso porque não sei como imprimir texto que pode ser lido por scanf, std :: getline, std :: cin e assim por diante. Então codifiquestd::cin << "hello";
não é compilado (nenhuma correspondência para "operador <<" em "std :: cin" "hello" ’). Funçãofprintf(stdin, "hello");
não imprime nada e o scanf não consegue ler esta mensagem impressa. É evidente questd::getline(std::cin, str);
escanf("%s", s);
egets(s)
e assim por diante não pode ler o texto que foi produzido porprintf
oustd::out
. Então a questão é: como eu posso imprimir texto no console que também estará emstdin
(std::cin
) Ou talvez haja uma maneira mais elegante de organizar o histórico de comandos?
P.S. Eu também pensei em simular o botão pressionando para imprimir o texto que eu preciso, mas espero que haja uma maneira melhor de fazer o histórico de comandos
P.P.S. Eu uso Linux e C ++