コマンドをループで入力できるインタラクティブなコンソールアプリケーションを作りたい。たとえば、ユーザーが「検索」と入力すると、プログラムはいくつかのデータを見つけて画面に出力します。次に、プログラムは次のコマンド(検索、終了など)を待ちます。ユーザーの便宜のために、プログラムがコマンド履歴をサポートするようにしたい(ターミナルのように、キーボードの上下矢印を押したとき)。しかし、scanf、std :: getline、std :: cinなどでさらに読むことができるテキストを印刷する方法がわからないため、その方法を理解できません。したがって、コードstd::cin << "hello";
はコンパイルされません( 'std :: cin << "hello"'の 'operator <<'に一致しません)。関数fprintf(stdin, "hello");
は何も出力せず、scanfはこの出力されたメッセージを読み取ることができません。これは、ことは明らかであるstd::getline(std::cin, str);
とscanf("%s", s);
し、gets(s)
「とその缶にprintf
またはstd::out
。だから問題は:コンソールにテキストを印刷するにはどうすればよいですか?これもstdin
(std::cin
)にありますか?それとも、コマンド履歴を整理するためのよりエレガントな方法がありますか?
PS必要なテキストを印刷するためにボタンを押すシミュレーションをシミュレートすることも考えましたが、コマンド履歴を作成するためのより良い方法があることを願っています
PPS私はLinuxとC ++を使用しています
その目的のために正確に作成されたreadline
およびhistory
ライブラリを使用します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加