簡體   English   中英

什么時候檢查 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.

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