[英]An input loop for reading a file
我是編程的初學者,我需要本書中提供的這段代碼幫助。
for (My_type var; ist >> var;) { // read until end of file
// maybe check that var is valid
// do something with var
}
if (ist.fail()) {
ist.clear();
char ch;
// the error function is created into the book :
if (!(ist >> ch && ch == '|')) error("Bad termination of input\n");
}
// carry on : we found end of file or terminator
這個例子是關於從文件中讀取值的。 我嘗試使用此功能,但是在理解其工作方式時遇到了一些麻煩:
如果我在循環后嘗試測試流狀態,我會同時獲得eof
狀態和fail
狀態,那么可能性如何? 如何避免同時觸發fail
和eof
?
EOF何時准確觸發? 從我的測試來看,當我到達序列的最后一個值時似乎觸發了該定義,對嗎?
謝謝。
如果我在循環后嘗試測試流狀態,我會同時獲得eof狀態和失敗狀態,那么可能性如何? 如何避免同時觸發失敗和eof?
可能存在無法轉換為My_type
字符,並且該字符是文件中的最后一個字符。 然后,將設置failbit
和eofbit
。
EOF何時准確觸發? 從我的測試來看,當我到達序列的最后一個值時似乎觸發了該定義,對嗎?
是的,讀取最后一個字符時會設置eofbit
。
如果滿足以下條件之一,提取將停止:
文件結束出現在輸入序列上;
在輸出序列中插入失敗(在這種情況下,不會提取要插入的字符);
發生異常(在這種情況下,將捕獲異常,並且只有在exceptions()中啟用了故障位時才重新拋出)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.