我是一個初學者以C++,我只是不能包圍我的頭什麼cin.ignore & cin.clear,他們使我絕對沒有意義。當你這個給我解釋,請非常描述使用cin.clear時的一般用途是什麼?
-3
A
回答
0
std::cin.ignore()
可以稱爲三種不同的方式:
無參數:一個單個字符從輸入緩衝器中取出並丟棄:
std::cin.ignore(); //discard 1 character
一個參數:指定的字符數取自輸入緩衝區並丟棄:
std::cin.ignore(33); //discard 33 characters
兩個參數:丟棄指定的字符數,或丟棄字符至多幷包括指定的分隔符(以先到者爲準):
std::cin.ignore(26, '\n'); //ignore 26 characters or to a newline, whichever comes first
源:http://www.augustcouncil.com/~tgibson/tutorial/iotips.html
1
在C++中的輸入處理,cin.fail()
將返回true如果最後的cin
命令失敗。
通常,cin.fail()
將在下列情況下返回true:
- 隨時到達
EOF
並嘗試讀什麼,cin.fail()
將返回true。 - 如果您嘗試讀取整數並且它收到無法轉換爲整數的內容。
當cin.fail()
返回true併發生錯誤時,輸入緩衝區cin
被置於「錯誤狀態」。該州將阻止進一步的輸入處理。因此,您必須使用cin.clear()
。它將覆蓋流內部錯誤標誌的當前值=>如果狀態爲好,則所有位都由處於狀態的那些位取代。所有錯誤標誌都被清除。
cin.ignore
對於中,首先將通過第一構造sentry
對象訪問輸入序列。之後,它會從其關聯的流緩衝區對象中提取字符,就像調用其成員函數sbumpc
或sgetc
一樣,最後在返回之前銷燬該哨兵對象。
因此,它通常用於執行提取和丟棄字符。 cin.ignore
的一個典型例子是,當在cin
之後使用getline()
時,它會在緩衝區中留下換行符,直到您切換功能爲止。那爲什麼你必須刷新緩衝區外的新行。
相關問題
- 1. 與PageDown一起使用時,MarkDownSharp的用途是什麼?
- 2. 共享時「FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET」的用途是什麼?
- 3. layout.xml的用途是什麼?
- 4. PhoneGap的用途是什麼?
- 5. AtomicReferenceArray的用途是什麼?
- 6. felix.xml的用途是什麼?
- 7. WSDL的用途是什麼?
- 8. RegisterFmxClasses的用途是什麼?
- 9. FXCollections.observableArrayList的用途是什麼?
- 10. config.assets.precompile的用途是什麼?
- 11. Rake的用途是什麼?
- 12. _dl_sysinfo_int80的用途是什麼?
- 13. javax.security.auth.callback。*的用途是什麼?
- 14. System.Data.SqlClient.SqlParameter.IsNullable的用途是什麼?
- 15. _GLOBAL__I_的用途是什麼?
- 16. $ _POST的用途是什麼?
- 17. RhoMobile的用途是什麼?
- 18. StandardOpenOption.SPARSE的用途是什麼?
- 19. CreateSilverlight.js的用途是什麼?
- 20. ServicePointManager.ServerCertificateValidationCallback的用途是什麼?
- 21. RegisterGlobalFilters的用途是什麼?
- 22. SDL_opengl_glext.h的用途是什麼?
- 23. NSExpression的用途是什麼?
- 24. AutoDiscoverURL的用途是什麼?
- 25. jquery.mobile.structure的用途是什麼?
- 26. JMSTemplate.execute的用途是什麼
- 27. Object.prototype.toString()的用途是什麼?
- 28. RecognizerIntent.DETAILS_META_DATA的用途是什麼?
- 29. Windows.Data.Xml.Dom的用途是什麼
- 30. gulp.src的用途是什麼?
建議的忽略是'std :: cin.ignore(std :: numeric_limits :: max(),'\ n');',但是當在一般意義上使用它時,必須要小心一點。如果它沒有找到換行符,它可能會等待幾個kaijuzillion字符,這幾乎浪費了每個人的時間。 –
user4581301
ty爲小費和這個詞「kaijuzillion」我愛它。 – Romeo
'std :: numeric_limits :: max()'不僅僅是一個大數字。對於ignore()來說,這是一種特殊情況,它會禁用計數,因此會消耗所有直到幷包括分隔符的字符。 –
Blastfurnace