2009-07-09 3 views
3

cinを使うのと同じようにユーザからの入力を促すことができますが(GUIなしで)、ユーザが編集できるデフォルトの選択肢がありますか?C++で編集可能なデフォルトのプロンプト?

例えば、プログラムは言うだろう:明確化のためなど、

Give your input: default 
を、ユーザーが「デフォルト」を使用して入力するか、「デフォルト1」を取得するために入力した後、1を押す押すことができ

EDIT :

現在私のプログラムでは、プロンプトにデフォルトを提供しています(以下の回答のいずれか)。しかし、私は非常に特殊なケースで書いていますが、編集可能なデフォルトを持つことは非常に時間を節約します(そして、90%の時間で、デフォルトでサフィックスを追加するだけです)。私はサフィックスのみを要求することができますが、その後、他の10%のケースでデフォルトを編集する柔軟性がなくなりました。

答えて

4

GNU readlineを使用します。

+2

具体的には、 'rl_insert_text()'が必要です。 ReadlineにはOSXに関するいくつかの問題がありますが(http://stackoverflow.com/questions/967029/using-readlines-rlinserttext-on-osx-10-5)、代わりに同様の 'editline'ライブラリを使うことができます(http:// devworld.apple.com/dOcUmEnTaTiOn/Darwin/Reference/ManPages/man3/editline.3.html)、あなたは 'el_insertstr()'を使いたいでしょう。 – rampion

+0

良い提案ですが、私は外部依存関係を持っていません... – polyglot

0

外部ライブラリなしで簡単には見つかりません。すべての端末でこれを別々に処理します。ロットのコードを書く場合を除き、ライブラリが必要です。私はあなたがNcursesを調べることをお勧めします。

+0

cursesはこのユースケースでは大過剰です。 – Novelocrat

3

これは、通常、説明した方法とは少し異なります。デフォルトのオプションをというプロンプトの一部として表示するのはかなり一般的です(少なくとも私が見たように)。の後には表示されません。たとえば、次のように

Please enter a year (default: 2009):

または

Do you really want to exit (N):

これは、ユーザーが彼/彼女の自身の価値ではなく、デフォルト値を入力したいんならば、彼/彼女は必要としないという追加の利点を持っていますそうするために既存の値を削除することは、特に、長い一連の質問/プロンプトを扱う場合には使い勝手が悪く、むしろイライラします。

特別なライブラリは必要なく、余分なコードも大幅に少なくて済みます。

+1

編集可能なデフォルトは便利です - コミットメッセージやgitやsvnのように、あるいはいつでも不完全なデフォルトをユーザに提示したいときなどです。 – rampion

+1

これは私が今持っているものです。非常に特殊なケースでは、編集可能なデフォルトを持つことは非常に時間を節約できます(そして、ユーザが必要とする時間の90%はデフォルトに接尾辞を追加することです)。私はサフィックスのみを要求することができますが、その後10%のケースでデフォルトを編集する柔軟性がなくなりました。 – polyglot

+0

理解しやすい。 –

関連する問題