#include<sstream>
#include<string>
#include<fstream>
using namespace std;
// 根据文件行第一个词(即名字)来删除,可修改为根据行号或其他
void delLine(string file_name, string name) {
ifstream in(file_name); // 以读方式打开文件
string data = ""; // 保存文件内容
string line, tmp;
while (getline(in, line)) {
istringstream is(line);
is >> tmp;
if (tmp == name)
; // 空语句,无任何作用
else
data += (line+"\n");
}
in.close(); // 关闭文件
ofstream os(file_name); // 以写方式打开文件,会删掉文件中的所有内容
os << data; // 写入文件
os.close();
}
// 根据name参数确定修改哪一行,可根据需求调整
void changeLine(string file_name, string name, string passward="", string new_name="") {
ifstream in(file_name);
string data = "";
string line, tmp;
while (getline(in, line)) {
istringstream is(line);
is >> tmp;
if (tmp == name) {
if (new_name.empty()) // 判断有无修改name
data += name;
else
data += new_name;
data += " ";
is >> tmp;
if (passward.empty()) // 判断有无修改password
data += tmp;
else
data += passward;
data += "\n";
}
else
data += (line + "\n");
}
in.close();
ofstream os(file_name);
os << data;
os.close();
}
个人认为这种策略需要的空间太大,尤其文件大的时候。如果知道其他简单的方法请告诉我,谢谢。