首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

再问c++文件读写的有关问题

2012-03-02 
再问c++文件读写的问题第一次来,还没熟悉csdn的发帖规矩,问题没问完就结贴了,重新问,代码如下:#include i

再问c++文件读写的问题
第一次来,还没熟悉csdn的发帖规矩,问题没问完就结贴了,重新问,代码如下:
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
using   namespace   std;

int   main()
{
ifstream   fin( "1 ");
vector <   pair   <double,   double>   >   t_s;
pair <double,double>   tmp;

while(!fin.eof())
{
fin> > tmp.first> > tmp.second;
t_s.push_back(tmp);
}
fin.close();

ofstream   fout( "t_s ");
vector <   pair   <double,   double>   > ::iterator   iter;
for(iter=t_s.begin();   iter!=t_s.end();   ++iter)
fout < <setiosflags(ios::left) < <iter-> first < < '\t ' < <iter-> second < <endl;
fout.close();
}
测试用文件1的内容是:
1.111   2.222
2.222   3.333
输出文件的内容是:
1.111   2.222
2.222   3.333
2.222   3.333
-------------
回贴说使用
while(fin> > tmp.first> > tmp.second)
{
t_s.push_back(tmp);
}
可以解决问题,但为什么会是这样?

[解决办法]
因为你的文件在3.333后面还有空格或者回车,读完后不会置eof状态的,所以你就多读了一次。
但这多读的一次是不成功的,因为后面确实没有数了,于是会置eof和fail状态。
而C++又说,不成功的读不会修改你目标变量里的内容。

热点排行