[英]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.