¿Cómo hacer el historial de comandos en la aplicación de consola?

Quiero hacer una aplicación de consola interactiva, que permite ingresar comandos en bucle. Por ejemplo, el usuario escribe "buscar" y el programa encuentra algunos datos y los imprime en la pantalla. Luego, el programa espera el siguiente comando (que se puede buscar, salir u otro). Para comodidad del usuario, quiero que mi programa admita el historial de comandos (como en el terminal, al presionar las flechas hacia arriba y hacia abajo en el teclado). Pero no puedo darme cuenta de cómo hacerlo porque no sé cómo imprimir texto que se puede leer más a fondo con scanf, std :: getline, std :: cin, etc. Asi codigostd::cin << "hello"; no está compilado (no coincide con ‘operador <<’ en ‘std :: cin <<" hello "’). Funciónfprintf(stdin, "hello"); no imprime nada y scanf no puede leer este mensaje impreso. Es evidente questd::getline(std::cin, str); yscanf("%s", s); ygets(s) y así sucesivamente no se puede leer el texto que ha sido generado porprintf ostd::out. Entonces la pregunta es: ¿cómo puedo imprimir texto en la consola que también estará enstdin (std::cin)? ¿O tal vez hay una forma más elegante de organizar la historia de comandos?

PD También pensé en simular la pulsación de un botón para imprimir el texto que necesito, pero espero que haya una mejor manera de hacer el historial de comandos.

P.P.S. Yo uso Linux y C ++

Respuestas a la pregunta(2)

Su respuesta a la pregunta