修改文件指定位置数据
修改文件指定位置数据
笔者遇到这样一道题:设计一个银行类,要求可以实现转账、取款、存款等功能,那么必定要实现修改文件指定位置的数据。
笔者左思右想,想到以下思路:产生一个新文件,把原文件的数据修改后转存,然后新文件覆盖原文件,并且重命名;
例如:欲将上述数据修改为以下数据,即将王麻子后的88改为89.
用到以下函数
system("ren D:\\old.dat new.dat");//将old.dat命名为new.dat system("del D:\\old.dat");//删除old.dat文件
由于代码比较简单,所以直接给出代码:
#include<iostream> #include<fstream> #include<string> using namespace std; int main(){ ofstream os; os.open("D:\\old.dat",ios::out|ios::trunc); os<<"张三"<<" "<<"88"<<" "<<"89"<<endl; os<<"李四"<<" "<<"88"<<" "<<"89"<<endl; os<<"王麻子"<<" "<<"88"<<" "<<"89"<<endl; os.close(); ifstream is; is.open("D:\\old.dat",ios::in); os.open("D:\\new.dat",ios::out); string str; int flag , _flag=0; while(!is.eof()){ is>>str; if(str=="王麻子"){ flag=0; } if(flag == 1){ str="89"; } os<<str<<" "; flag++; _flag++; if(_flag==3){ os<<endl; _flag=0; } } is.close(); os.close(); cout<<"赋值完毕!正在删除..."<<endl; //删除改名 system("del D:\\old.dat"); cout<<"删除完毕!正在重命名..."<<endl; system("ren D:\\new.dat old.dat"); cout<<"重命名完毕!"<<endl; cout<<"修改完毕!"<<endl; return 0; }
本文仅仅代表笔者一些小想法。
笔者不精,文中若有不妥之处,欢迎前来指正!