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();
}
c++中删除指定的字符可以用正则表达式,regex_replace(std::string str,std::regex reg,std::string replace),参数的意思分别是
参数1:std::string: 返回值:为原字符串string执行 替换规则后 输出的新的字符串str
参数2:std::regex reg:替换规则中 被替换 的 原目标字符或字符串
参数3:std::string replace 替换规则中 替换 的 新目标字符或字符串
具体的用法可以看我的博客
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。▼ http://bbs.csdn.net/topics/391975224