[英]In what practical case bool(std::ifstream) != std::ifstream::good()?
[英]When exactly to check std::ifstream::good()?
假設我有一個代碼來計算文件的大小:
std::ifstream ifs(path, std::ifstream::ate | std::ifstream::binary);
unsigned int size = ifs.tellg();
ifs.close();
大多數時間在 C++ 中,在哪里/何時調用ifs.good()
?
就我而言,是在創建流之后還是在調用tellg()
之后更好?
然后,如果good()
返回false
,我應該明確關閉流嗎?
從你永遠不需要明確關閉流開始, good()
是一個函數:
檢查流狀態是否良好
如果沒有設置流的錯誤狀態標志(eofbit、failbit 和 badbit),則返回 true。
您可以調用它來驗證某些事情是否進展順利,然后驗證其他位以檢查出了什么問題。 例如 :
輸入操作到達文件尾 (eofbit)
I/O 操作的邏輯錯誤 (failbit)
I/O 操作的讀/寫錯誤 (badbit)
但是,在手動關閉流時調用 good to think 是沒有用的。
就我而言,是在創建流之后還是在調用 tellg() 之后更好?
在我看來,在這種情況下您不需要調用good()
,但是如果您想調用它,最好在tellg()
之后調用它,它可以在執行過程中設置一些失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.