[問題] fstream問題

作者: school4303 (某爬蟲類)   2018-03-20 01:52:45
開發平台(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之前又多輸出了一次 但是一時間想不到是哪裡錯了
作者: a29022792 (我貓廚我驕傲)   2018-03-20 02:25:00
旁邊點中斷點 按f10跑一次就知道了
作者: stucode   2018-03-20 17:39:00
eofbit 只有在「已經吃到」檔案結尾之後才會設立。
作者: school4303 (某爬蟲類)   2018-03-20 18:56:00
懂了 感謝所以我可以理解是 有用到get getline 之類的才會讓 eof為true 而呼叫eof不會自己去檢查說是不是EOF嗎
作者: stucode   2018-03-20 19:33:00
是的,eof() 只回報目前的狀態,並不會自行檢查。
作者: Brothre23 (哈姆妍)   2018-03-21 09:42:00
讀檔好像也是? 用eof判斷都會多讀一次

Links booklink

Contact Us: admin [ a t ] ucptt.com