返回信息流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 为啥最后一个数据读了两次,求原因及解决方法
这是一条镜像帖。来源:北邮人论坛 / cpp / #46944同步于 2010/11/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求教ifstream文件尾最后一行读两次的问题
RaulSpain007
2010/11/27镜像同步39 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
- while(!in.eof())
+ while(in >> token)
{
- in >> token;
TokenVector.push_back(token);
}
看这样行不行。
连续两次in >> token会是啥效果……一直不明白io流啊
【 在 wks (cloverprince) 的大作中提到: 】
: - while(!in.eof())
: + while(in >> token)
: {
: ...................
还是说因为是在while里所以只是检测下流?
【 在 renne (歼灭天使 玲) 的大作中提到: 】
: 连续两次in >> token会是啥效果……一直不明白io流啊
【 在 wks 的大作中提到: 】
: - while(!in.eof())
: + while(in >> token)
: {
: ...................
文件流是咋整文件的....和C好不一样哈
我在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里的内容是和楼主的一样
【 在 h0ngyue 的大作中提到: 】
: 我在vs2008下测试的结果为啥是结尾只读一次?
: vector里只有一个7呀
: 以下是测试代码
: ...................
.......呃 同是vs2008...我是直接
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
using namespace std;
不过我觉得和这个没关系把
我觉得确实应该是两个啊
虽然我没试验过
读到第一个7的时候 !eof还不会是0
虽然读到最后的时候会再读一次
然后就不清楚应该是啥了,总之读到结尾的时候肯定又读了一次
【 在 h0ngyue (终极正太小boss) 的大作中提到: 】
: 我在vs2008下测试的结果为啥是结尾只读一次?
: vector里只有一个7呀
: 以下是测试代码
: ...................
orz
vc6表示,也只有一个
【 在 renne (歼灭天使 玲) 的大作中提到: 】
: 我觉得确实应该是两个啊
: 虽然我没试验过
: 读到第一个7的时候 !eof还不会是0
: ...................
【 在 renne 的大作中提到: 】
: orz
: vc6表示,也只有一个
: 【 在 renne (歼灭天使 玲) 的大作中提到: 】
: ...................
....呃 ...难道我的编译器文件尾买一送一?