作者school4303 (某爬虫类)
看板C_and_CPP
标题[问题] fstream问题
时间Tue Mar 20 01:52:45 2018
开发平台(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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1521481969.A.248.html
1F:→ a29022792: 旁边点中断点 按f10跑一次就知道了 03/20 02:25
我有下中断点跑过 但是还是没有头绪
※ 编辑: school4303 (118.169.189.238), 03/20/2018 12:33:16
2F:→ stucode: eofbit 只有在「已经吃到」档案结尾之後才会设立。 03/20 17:39
3F:→ school4303: 懂了 感谢 03/20 18:56
4F:→ school4303: 所以我可以理解是 有用到get getline 之类的才会让 eo 03/20 18:59
5F:→ school4303: f为true 而呼叫eof不会自己去检查说是不是EOF吗 03/20 18:59
6F:推 stucode: 是的,eof() 只回报目前的状态,并不会自行检查。 03/20 19:33
7F:推 Brothre23: 读档好像也是? 用eof判断都会多读一次 03/21 09:42