GNU/Linux >> Tutoriels Linux >  >> Linux

Interface de ligne de commande C++

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);
    }
}

Linux
  1. Spécification générale pour l'interface de ligne de commande ?

  2. L'installation de pilotes supplémentaires a entraîné une interface de ligne de commande ?

  3. vim :commande introuvable

  4. Conversion de fuseau horaire par ligne de commande

  5. Bash si sur une seule ligne

Commande Diff sous Linux

Présentation de l'interface de ligne de commande Wireshark :le TShark

Maîtrisez la ligne de commande Linux

Principes de base de la ligne de commande Linux :sudo

commande ip sous Linux avec des exemples

Lecteurs audio en ligne de commande ?