为什么我在输入数据到txt后,会把前面的数据覆盖,只能保存最近输入的一组数据

这是代码intshuru(zhigongziz[]){ofstreamofile("D:\\Manage.txt");//打开一个文件,并且指定目录if(!ofile){... 这是代码
int shuru(zhigongzi z[])
{
ofstream ofile("D:\\Manage.txt");//打开一个文件,并且指定目录

if(!ofile)
{
cout<<"文件夹不能打开."<<endl;
return 0;
}
int p=1;
while(p==1)
{
i++;
z[i].setzhigongzi();
char tmp[512] = { '\0' };
sprintf(tmp, "%s %d %s %0.2f %0.2f %0.2f %0.2f %0.2f %0.2f %0.2f",
z[i].getbumen(), z[i].getnumber(), z[i].getname(), /*员工信息*/
z[i].getjbgz(), z[i].getjt(), z[i].getgwjt(), z[i].getyfs(), z[i].getgrsds(), z[i].getsks(), z[i].getsfs()); // 工资
ofile << tmp << endl;
cout<<"继续输入请按1,退出请按0:";
cin>>p;
}
return i+1;
ofile.close();
}
展开
 我来答
jimmy14888888
推荐于2016-10-12 · TA获得超过1340个赞
知道小有建树答主
回答量:550
采纳率:80%
帮助的人:357万
展开全部

打开文件的方式在ios类(所以流式I/O的基类)中定义,有如下几种方式:


ios::in    为输入(读)而打开文件    

ios::out    为输出(写)而打开文件    

ios::ate    初始位置:文件尾    

ios::app    所有输出附加在文件末尾    

ios::trunc    如果文件已存在则先删除该文件    

ios::binary    二进制方式

添加上:ios::app才会追加内容

因此:

ofstream ofile("D:\\Manage.txt", ios::out|ios::app);//打开一个文件,并且指定目录

 这些方式是能够进行组合使用的,以“或”运算(“|”)的方式,例如:

ofstream out;  
out.open("Hello.txt", ios::in|ios::out|ios::binary); //根据自己需要进行适当的选取
追问
嗯,我之前在别的论坛上也问过,都是这样的解答,我已经明白了,谢谢!不过可不可以用iOS::in来读取这个txt文件?感觉自己再次运行程序后,数据保存了,但如果再次查询数据的话,他无法显示,但txt当中还是存在的!
追答
把文件close了,重新再用ios::in打开就好了
我想你是要输入完马上再读取,
这样的话把读取指针移动一下才能读取,
参考fstream里面的seekg函数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式