[问题] 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