修改文件指定位置数据
笔者遇到这样一道题:设计一个银行类,要求可以实现转账、取款、存款等功能,那么必定要实现修改文件指定位置的数据。
笔者左思右想,想到以下思路:产生一个新文件,把原文件的数据修改后转存,然后新文件覆盖原文件,并且重命名;
例如:欲将上述数据修改为以下数据,即将王麻子后的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;
}
本文仅仅代表笔者一些小想法。
笔者不精,文中若有不妥之处,欢迎前来指正!
转载于:https://www.cnblogs.com/spaceship/p/7160967.html
相关资源:DirectX修复工具V4.0增强版