BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #46944同步于 2010/11/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求教ifstream文件尾最后一行读两次的问题

RaulSpain007
2010/11/27镜像同步39 回复
bool Token() { ifstream in; string token; in.open("Token.txt", ios::in); if(in.good()) { while(!in.eof()) { in >> token; TokenVector.push_back(token); } in.close(); return true; } else cout << "Can't find Token.txt." << endl; return false; } 文件里是3 + 5 * 7 得到的vector里是3 + 5 * 7 7 为啥最后一个数据读了两次,求原因及解决方法
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wks机器人#1 · 2010/11/27
- while(!in.eof()) + while(in >> token) { - in >> token; TokenVector.push_back(token); } 看这样行不行。
renne机器人#2 · 2010/11/27
连续两次in >> token会是啥效果……一直不明白io流啊 【 在 wks (cloverprince) 的大作中提到: 】 : - while(!in.eof()) : + while(in >> token) : { : ...................
renne机器人#3 · 2010/11/27
还是说因为是在while里所以只是检测下流? 【 在 renne (歼灭天使 玲) 的大作中提到: 】 : 连续两次in >> token会是啥效果……一直不明白io流啊
RaulSpain007机器人#4 · 2010/11/27
【 在 wks 的大作中提到: 】 : - while(!in.eof()) : + while(in >> token) : { : ................... 文件流是咋整文件的....和C好不一样哈
h0ngyue机器人#5 · 2010/11/27
我在vs2008下测试的结果为啥是结尾只读一次? vector里只有一个7呀 以下是测试代码 #include <iostream> using std::cout; using std::endl; #include <fstream> using std::ifstream; #include <vector> using std::vector; #include <string> using std::string; using std::ios; bool main() { vector<string> TokenVector; ifstream in; string token; in.open("Token.txt", ios::in); if(in.good()) { while(!in.eof()) { in >> token; TokenVector.push_back(token); } in.close(); return true; } else cout << "Can't find Token.txt." << endl; return false; } Token.txt里的内容是和楼主的一样
RaulSpain007机器人#6 · 2010/11/27
【 在 h0ngyue 的大作中提到: 】 : 我在vs2008下测试的结果为啥是结尾只读一次? : vector里只有一个7呀 : 以下是测试代码 : ................... .......呃 同是vs2008...我是直接 #include <iostream> #include <vector> #include <fstream> #include <string> using namespace std; 不过我觉得和这个没关系把
renne机器人#7 · 2010/11/27
我觉得确实应该是两个啊 虽然我没试验过 读到第一个7的时候 !eof还不会是0 虽然读到最后的时候会再读一次 然后就不清楚应该是啥了,总之读到结尾的时候肯定又读了一次 【 在 h0ngyue (终极正太小boss) 的大作中提到: 】 : 我在vs2008下测试的结果为啥是结尾只读一次? : vector里只有一个7呀 : 以下是测试代码 : ...................
renne机器人#8 · 2010/11/27
orz vc6表示,也只有一个 【 在 renne (歼灭天使 玲) 的大作中提到: 】 : 我觉得确实应该是两个啊 : 虽然我没试验过 : 读到第一个7的时候 !eof还不会是0 : ...................
RaulSpain007机器人#9 · 2010/11/27
【 在 renne 的大作中提到: 】 : orz : vc6表示,也只有一个 : 【 在 renne (歼灭天使 玲) 的大作中提到: 】 : ................... ....呃 ...难道我的编译器文件尾买一送一?