看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) VS2015 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 以 ifstream in("1.txt", ifstream::in|ifstream::binary); 讀入任意txt檔 以 cout <<hex<< (int)s; 輸出 卻會在最後0x0d 0x0a(windows的換行)0x0a的部分重複 餵入的資料(Input): 任意非空白的txt檔 預期的正確結果(Expected Output): 0x0d 0x0a 錯誤結果(Wrong Output): 0x0d 0x0a 0x0a 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) https://pastebin.com/KLe9fjbu 補充說明(Supplement): 我原本是想要拿來輸出一般可執行檔的 後來發現跑出來的東西好像不太對... 感覺是在碰到EOF之前又多輸出了一次 但是一時間想不到是哪裡錯了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.189.238 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1521481969.A.248.html
a29022792: 旁邊點中斷點 按f10跑一次就知道了 03/20 02:25
我有下中斷點跑過 但是還是沒有頭緒 ※ 編輯: school4303 (118.169.189.238), 03/20/2018 12:33:16
stucode: eofbit 只有在「已經吃到」檔案結尾之後才會設立。 03/20 17:39
school4303: 懂了 感謝 03/20 18:56
school4303: 所以我可以理解是 有用到get getline 之類的才會讓 eo 03/20 18:59
school4303: f為true 而呼叫eof不會自己去檢查說是不是EOF嗎 03/20 18:59
stucode: 是的,eof() 只回報目前的狀態,並不會自行檢查。 03/20 19:33
Brothre23: 讀檔好像也是? 用eof判斷都會多讀一次 03/21 09:42