cout<<"1-"<<Receive.tellg()<<endl;
cout<<"2-"<<char(Receive.peek())<<endl;
cout<<"3-"<<Receive.tellg()<<endl;
cout<<"4-"<<char(Receive.peek())<<endl;
cout<<"5-"<<Receive.tellg()<<endl;
cout<<"6-"<<char(Receive.peek())<<endl;
cout<<"7-"<<Receive.tellg()<<endl<<endl;
程序的其他部分与问题无关,大概是从尾到头读一个txt文件里的所有字符,我在debug的时候发现了这个现象:
1. 第一个tellg返回的指针位置是正确的,但是如果后面跟着一个peek,再用tellg返回指针位置就会+1了。peek按理来说不会移动文件指针,但后面再重复几次又不会每次都+1。
2. 貌似是跟windows系统换行符有关,如果txt文件里没有换行符的话就没有这个问题。
我google了一下,发现国外很多论坛有人提相同的问题,有人解答说peek+tellg是c++的一个经典bug,不过也没有找到清楚的解答,求大神指点!