1、问题描述
比如需要删除t.txt文件中第一列等于6的行。
2、代码
思路:首先将所有行放到string数组中,然后将第一列信息放到vector中。清空原文件,将除了指定编号的行都放到原文件中。
vector<string> split(string s,char c){
vector<string> re;
for(int i = 0; i < s.size(); i++){
string t="";
while(i<s.size()&&s[i]!=c){
t+=s[i];
i++;
}
re.push_back(t);
}
return re;
}
void delete_line(int id){
string G[1000];
int k = 0;
char buffer[256];
fstream out;
out.open(p,ios::in);
while(!out.eof())
{
out.getline(buffer,256,'\n');//getline(char *,int,char) 表示该行字符达到256个或遇到换行就结束
G[k++] = buffer;
}
out.close();
vector<string> re[1000];
for(int i = 0; i < k; i++){
re[i] = split(G[i],' ');
}
string ID = to_string(id);
//清空原文件
ofstream clear;
clear.open(p,ios::out);
clear.close();
for(int i = 0; i < k; i++){
if(ID == re[i][0]){
continue;
}else{
ofstream file;
file.open(p,ios::app);
file <<G[i].data() << endl;
file.close();
}
}
}