C++怎么删除文件中的某一位置的字符或者替换指定的行?
知道将文件移到另外一个文件读字符串删除内容再重写的写法,但是我想用文件的指针直接对文件中某一位置的内容进行操作
主要是这样写后,发现文件并不能识别出退格符:
下面是运行后的结果:
C++怎么删除文件中的某一位置的字符或者替换指定的行?
知道将文件移到另外一个文件读字符串删除内容再重写的写法,但是我想用文件的指针直接对文件中某一位置的内容进行操作
感谢邀请
以下是删除某行或修改某行的代码,供参考
#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();
}