C++:用for循环写入txt文件时(即向流插入数据),如何输入一个结束标志跳出此循环?

代码如下ofstreamxuejifile;xuejifile.open("XUEJI.txt",ios::app);if(!xuejifile)//调用重载算符函数测试... 代码如下
ofstream xuejifile;
xuejifile.open("XUEJI.txt",ios::app);
if(!xuejifile) //调用重载算符函数测试流
{
cerr<<"打开文件错误!"<<endl;
abort(); //结束
}

for(i=0;getchar()=='E';i++)
{
xuejifile<<"学号"<<stu[i].number<<"\t";
xuejifile<<"姓名"<<stu[i].name<<"\t";
xuejifile<<"年级"<<stu[i].grade<<"\t";
xuejifile<<"班级"<<stu[i].Class<<"\t";
xuejifile<<"入学时间(格式:年份月份日期)"<<stu[i].name<<"\t";
xuejifile<<"学费金额(只输入数字)"<<stu[i].fee<<"\t";
xuejifile<<"离校时间(格式:年份月份日期)"<<stu[i].offtime<<"\t";
xuejifile<<"离校原因"<<stu[i].reason<<"\t\n";
i++;
}
xuejifile.close();
我试过好多中方案,比如写成
while(cin>>stu[i].number>>stu[i]>>name……>>stu[i].reason)
{
xuejifile<<"学号"<<stu[i].number<<"\t";
xuejifile<<"姓名"<<stu[i].name<<"\t";
xuejifile<<"年级"<<stu[i].grade<<"\t";
xuejifile<<"班级"<<stu[i].Class<<"\t";
xuejifile<<"入学时间(格式:年份月份日期)"<<stu[i].name<<"\t";
xuejifile<<"学费金额(只输入数字)"<<stu[i].fee<<"\t";
xuejifile<<"离校时间(格式:年份月份日期)"<<stu[i].offtime<<"\t";
xuejifile<<"离校原因"<<stu[i].reason<<"\t\n";
i++;
} 按Ctrl-z结束
但是这样也不行。我想知道为什么平时用循环都可以采用类似方法跳出来,但是用循环向流中插入数据(既写入文件)就不行呢???求大神帮忙!!
展开
 我来答
不二脑思
2012-12-26 · 喜欢游戏的数学IT人
不二脑思
采纳数:266 获赞数:1171

向TA提问 私信TA
展开全部
getchar()=='E' 这种方式应该是可以的 ..
是不是 因为你没有输入大写E 而是输入的小写e 所以没有判断成功 ..
追问
不是。如果用for(i=0;getchar()=='E';i++)的话,直接就把循环体跳过不执行了……我这个是一个学生信息输入,在它前面还有一个菜单,选择进入后直接跳过这段了就……
追答
不对 你应该写成getchar()!='E' 这是执行的条件 不是跳出的条件 ..
维多K
2012-12-26 · TA获得超过413个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:175万
展开全部
首先,如果你要写入的数据已经存在了,那么你的这个循环控制应该是通过变量i来控制吧,因为你的这个stu到底有多少个呢?总不能超出实际数量;
其次,如果你想一边数据数据一边来写入文件的话,那么你应该在for循环或者while循环体内输入,然后你可以根据输入的内容来跳出循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fengzhong666
2012-12-26 · TA获得超过255个赞
知道答主
回答量:149
采纳率:0%
帮助的人:55.2万
展开全部
你搜一下sizeof函数的用法……
追问
???这个……和我的问题有联系咩?肿么用?
追答
额,你这手动退出,也不能这么写啊,这没人管,不就相当于死循环了?要命的……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式