GNU/Linux >> Linux の 問題 >  >> Linux

C++ コマンド ライン インターフェイス

完全な行編集機能と履歴機能が必要な場合は GNU readline ライブラリが最適ですが、単純なプロンプトで十分な場合 (または GNU ライセンスが不要な場合) は、標準ライブラリだけでこれを行うことができます:

#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";
}

これには GNU readline ライブラリをお勧めします。入力の行を取得するという面倒な作業を処理し、ユーザーがバックスペース、左右の矢印などを使用して行を編集したり、上矢印を使用して古いコマンドを呼び出したり、^R を使用して古いコマンドを検索したりできるようにします。など。Readline は、Linux などの典型的な UNIX ライクなディストリビューションにインストールされていますが、持っていない場合は、ここで見つけることができます。

編集:これは最小限の readline の例です:

#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. vim:コマンドが見つかりません

  2. コマンドラインによるタイムゾーン変換

  3. 単一行の場合はバッシュ

  1. Netcat コマンド ラインの問題

  2. コマンドラインから Wi-Fi インターフェースを起動する方法は?

  3. Linux でコマンドライン インターフェイスから TeX を実行する方法

  1. Linuxコマンドラインに関する8つのヒント

  2. LinuxでコマンドラインインターフェイスからAレコードを更新するにはどうすればよいですか?

  3. コマンドラインからの Clonezilla