完全な行編集機能と履歴機能が必要な場合は 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);
}
}