C 中的非阻塞控制台輸入
在現代C 中,非阻塞控制台輸入允許在程式運行時無縫處理使用者命令繼續運行並輸出訊息。此功能在互動式應用程式和遊戲中通常至關重要。
C 11 解決方案:
實現非阻塞控制台輸入的一種有效方法是使用單獨的控制台線。這種方法允許主程式繼續執行,同時後台執行緒監視控制台的輸入。以下程式碼範例使用 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 秒的超時時間來等待使用者輸入。如果使用者在此時間內輸入內容,程式會將答案變數設定為輸入。否則,它預設為“也許”。
這種非阻塞輸入方法允許程式繼續其正在進行的計算和輸出,同時仍有效地回應使用者輸入。它是建立互動式 C 應用程式的強大技術。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3