实际失败的代码执行许多get()/peek()调用,以查找令牌"/*“。如果在流中找到令牌,将调用unget(),因此下一个方法将看到以令牌开头的流。有时,看起来只取决于文件的长度,unget()调用就会失败。在内部,它调用which (),然后返回EOF。但是,在清除流状态之后,我可以很高兴地读取更多的字符,所以它不是完全的EOF。report error, show extra data can be read even after e
当链接到libstdc++和libc++时,下面的(玩具)程序返回不同的东西。这是libc++中的一个错误,还是我不理解istream eof()是如何工作的?我试着在linux和mac os x上用g++运行它,在mac os x上用clang运行,不管有没有-std=c++0x。我的印象是,eof()在尝试读取(通过get()或其他方法)实际上失败之前不会返回true。这是libstdc++的行为方式,但不是libc++的行为方式。#include