La bibliothèque GNU readline est idéale si vous voulez des fonctionnalités complètes d'édition de ligne et d'historique, mais si une simple invite suffit (ou si vous ne voulez pas la licence GNU), vous pouvez le faire avec uniquement la bibliothèque standard :
#include <iostream>
#include <string>
void process(std::string const & line);
int main()
{
for (std::string line; std::cout << "APP > " && std::getline(std::cin, line); )
{
if (!line.empty()) { process(line); }
}
std::cout << "Goodbye.\n";
}
Je recommande la bibliothèque GNU readline pour cela. Il prend en charge le travail fastidieux d'obtention de lignes d'entrée et permet à l'utilisateur de modifier sa ligne avec un retour arrière, des flèches gauche et droite, etc., et de rappeler une commande plus ancienne à l'aide de la flèche vers le haut et même de rechercher une commande plus ancienne à l'aide de ^ R, etc. Readline est installé avec des distributions typiques de type Unix comme Linux, mais si vous ne l'avez pas, vous pouvez le trouver ici.
Edit :Voici un exemple de ligne de lecture minimale :
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
int main(int argc, char ** argv)
{
while(1)
{
char * line = readline("> ");
if(!line) break;
if(*line) add_history(line);
/* Do something with the line here */
free(line);
}
}