如何在C++中删除/替换文件的最后一行?我研究了这些问题:Deleting specific line from file,Read and remove first (or last) line from txt file without copying 。我想过迭代到文件的末尾,然后替换最后一行,但我不确定该怎么做。
发布于 2021-06-20 15:38:03
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream fin("input.txt");
ofstream fout("output.txt");
while (!fin.eof()) {
string buffer;
getline(fin, buffer);
if (fin.eof()) {
fout << "text to replace last line";
} else {
fout << buffer << '\n';
}
}
fin.close();
fout.close();
}
您还可以读取和存储所有输入文件,修改并写入它:
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main() {
// read
ifstream fin("input.txt");
vector<string> lines;
while (!fin.eof()) {
string buffer;
getline(fin, buffer);
lines.push_back(buffer + '\n');
}
fin.close();
// modify
lines[lines.size() - 1] = "text to replace last line";
// write
ofstream fout("output.txt");
for (string line: lines) { // c++11 syntax
fout << line;
}
fout.close();
}
发布于 2021-06-20 15:53:26
查找文件内容中最后一次出现'\n‘的位置。如果文件以'\n‘结尾,即在最后一个'\n’之后没有更多的数据,那么找到'\n‘之前出现的位置。使用resize_file截断找到位置处的文件,或仅替换找到位置之后的内容。
https://stackoverflow.com/questions/68057397
复制相似问题