「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > インタラクティブ アプリケーション用に C++ でノンブロッキング コンソール入力を実装するにはどうすればよいですか?

インタラクティブ アプリケーション用に C++ でノンブロッキング コンソール入力を実装するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:636

How can I implement non-blocking console input in C   for interactive applications?

C のノンブロッキング コンソール入力

最新の C では、ノンブロッキング コンソール入力により、プログラム実行中にユーザー コマンドをシームレスに処理できます。は実行を続けて情報を出力します。この機能は、インタラクティブなアプリケーションやゲームで重要になることがよくあります。

C 11 解決策:

ノンブロッキングのコンソール入力を実装する効果的な方法の 1 つは、別個のコンソール入力を使用することです。糸。このアプローチにより、バックグラウンド スレッドがコンソールへの入力を監視している間、メイン プログラムの実行を継続できます。次のコード サンプルは、C 11 を使用したこのアプローチを示しています:

#include 
#include 
#include 
#include 

static std::string getAnswer()
{
    std::string answer;
    std::cin >> answer;
    return answer;
}

int main()
{
    std::chrono::seconds timeout(5);
    std::cout  future = std::async(getAnswer);

    if (future.wait_for(timeout) == std::future_status::ready)
        answer = future.get();

    std::cout 

説明:

この例では、getAnswer 関数がユーザーの入力を取得します。 std::async 関数は、getAnswer を実行する別のスレッドを起動し、結果の取得に使用できる std::future オブジェクトを返します。

メイン プログラムは、ユーザー入力を待機するタイムアウトを 5 秒に設定します。 。ユーザーがこの時間内に入力を入力すると、プログラムは応答変数を入力に設定します。それ以外の場合は、デフォルトで「maybe」になります。

このノンブロッキング入力アプローチにより、プログラムはユーザー入力に効率的に応答しながら、進行中の計算と出力を継続できます。これは、インタラクティブな C アプリケーションを構築するための強力なテクニックです。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3