看板 C_and_CPP 關於我們 聯絡資訊
ifstream inPut("file.dat", ios::in); inPut.read(reinterpret<char*>(&OBJ), sizeof(class)); 請問這個敘述完成後檔案的讀取位置會在哪裡? 假設以下每格都是sizeof(class)個bytes file □ ̄ ̄未讀取 讀過一筆 ̄ ̄□ □ ̄ ̄讀過兩筆 讀過三筆 ̄ ̄ 並且達eof 上述的觀念正確嗎? 會有個疑問是當我跑 do{ inPut.read(reinterpret<char*>(&OBJ), sizeof(class)); cout<<"hello"<<endl; } while(!inPut.eof()); 三筆資料會印出四個 hello, 第三筆會讀兩次才達到eof 能否幫我指正或是解釋一下為什麼會這樣?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.128.66
VictorTom:eof要等到read不到資料時才會被舉起來, 所以三筆資料讀 08/03 13:06
VictorTom:完以後, 第四次read讀不到資料, 此時eof才會ON, 才會離 08/03 13:06
VictorTom:開你的迴圈, 所以你會三筆資料卻看到四次hello:) 08/03 13:07
VictorTom:http://0rz.tw/u7njy Google到的說明, 板上search EOF 08/03 13:14
VictorTom:也有些討論可以研究看看....:) 08/03 13:14
loveme00835:read 就有回傳值告訴你成不成功了, 直接當測試條件問 08/03 13:40
jehovah:謝謝~~!! 08/03 13:40
loveme00835:題就解決大半 08/03 13:40