簡體   English   中英

Cin.Ignore()無法正常工作

[英]Cin.Ignore() is not working

這里有一個代碼:

cout << "Press Enter To Exit...";
cin.ignore();

該程序將執行並等待您按Enter鍵,然后退出。 現在看到以下代碼:

int m;
cin >> m;
cout << "Press Enter To Exit...";
cin.ignore();

這次輸入要保存的數字“ m”后,程序將退出,而無需等待等待按enter鍵的cin.ignore命令。

我的意思是,如果您在cin.ignore之前使用cin命令,則cin.ignore命令將跳過。 為什么? 我應該如何解決?

cin.ignore()基本上清除了內存中剩余的所有輸入。 在第一段代碼中,您沒有輸入任何內容,因此沒有任何內容需要清除,因此它等待您輸入內容。 在第二段代碼中,您使用了>>運算符,該運算符獲取格式化的輸入,但將結束行字符'\\n' (按ENTER鍵存儲的字符)留在輸入緩沖區中。 當您調用cin.ignore()時,它將完成工作並清除該緩沖區。由於已經執行了他所調用的操作,因此只是讓程序繼續運行(在本例中一直結束)。 如果您希望用戶在程序繼續使用cin.get()之前輸入一些內容,請記住cin.ignore()用於清除輸入緩沖區(保存輸入的小內存cin.get()

您還應該知道這一點:

如果使用:

-> cin<<您之后應調用cin.ignore(),因為它不占用結尾行字符'\\ n',該行字符在您下次要求輸入時會被占用,從而導致不需要的結果,例如程序未等待您輸入任何東西。

-> cin.get()您不應調用cin.ignore(),因為它消耗了'\\ n'

-> getline(cin,yourstring) (獲取包括結束行字符的整個輸入行),您也不應使用cin.ignore()

采用

int m;
cin >> m;
cin.ignore();

cout << "Press Enter To Exit...";
cin.ignore();

當您使用cin >> m ,鍵入cin >> m值,然后按Enter,輸入'\\n'進入buffer和cin.ignore(); 忽略它,程序結束。

用這個。

std::cin.sync(); std::cin.get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM