关于C++程序的ifstream和ofstream,为什么输出135799呢?
#include<iostream>#include<fstream>usingnamespacestd;intmain(){inti;ofstreamftxt1;//默...
#include <iostream >
#include <fstream >
using namespace std;
int main() {
int i;
ofstream ftxt1;//默认以输出方式打开文件 ,是从内存到硬盘
ftxt1.open("xt1.txt",ios::out);//文件以输出方式打开(内存数据输出到文件)
for(i=0; i<10; i++)
ftxt1<<i<<' ' ;
ftxt1.close();
ifstream ftxt2;//默认以输出方式打开文件 ,是从硬盘到内存
ftxt2.open("xt1.txt",ios::in);
while(!ftxt2.eof()) {//end of file的缩写,表示"文字流"(stream)的结尾
ftxt2 >>i>>i;
cout <<i << endl;
}
ftxt2.close();
return 0;
}
关于C++程序的ifstream和ofstream,为什么输出135799呢? 展开
#include <fstream >
using namespace std;
int main() {
int i;
ofstream ftxt1;//默认以输出方式打开文件 ,是从内存到硬盘
ftxt1.open("xt1.txt",ios::out);//文件以输出方式打开(内存数据输出到文件)
for(i=0; i<10; i++)
ftxt1<<i<<' ' ;
ftxt1.close();
ifstream ftxt2;//默认以输出方式打开文件 ,是从硬盘到内存
ftxt2.open("xt1.txt",ios::in);
while(!ftxt2.eof()) {//end of file的缩写,表示"文字流"(stream)的结尾
ftxt2 >>i>>i;
cout <<i << endl;
}
ftxt2.close();
return 0;
}
关于C++程序的ifstream和ofstream,为什么输出135799呢? 展开
2个回答
展开全部
显然是函数eof()用得不妥。eof()并不读文件,而是检查刚刚发生的读文件动作是否越过了文件尾。在第一次进入while时还没有发生读文件动作,eof()检查谁呢?所以就把这个不匹配一直转移到了读文件结束处,在那里得到了不希望的结果。有两种修改办法:
在while前加一句ftxt2 >>i>>i;,让第一次执行!ftxt2.eof()时已经读过文件了。为了“读一次,eof()一次”,得把while“体”中的ftxt2 >>i>>i;和cout <<i << endl;的先后次序对调。即写成:ftxt2 >>i>>i; while(!ftxt2.eof()) {cout <<i << endl; ftxt2 >>i>>i;}
把whie“体”中的ftxt2 >>i>>i移到while括号中的!ftxt2.eof()前用逗号隔开。也就是把“体”中的ftxt2 >>i>>i;删除,而在!ftxt2.eof()前加写ftxt2 >>i>>i,。即写成:while(ftxt2 >>i>>i.!ftxt2.eof()) {cout <<i << endl;}
保证成功!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询