gpt4 book ai didi

c++ - 如何逐行读取并覆盖同一文件中的一行

转载 作者:行者123 更新时间:2023-11-28 06:02:21 31 4
gpt4 key购买 nike

我逐行读取文本文件,如果一行满足某些要求,我想覆盖该行并将其保存在同一文件中的同一位置。

这是我的(简化):

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main(){

fstream file;
string line;
file.open("Test.txt");

while (getline(file, line))
{
if (line.size() > 7) file << line.append(" <- long line");
}
}

最佳答案

您可以将文件读入内存,然后在更改任何行后将其写出。以下示例将其读入 vector ,然后将其写回。

#include <iostream>
#include <string>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
fstream file;
string line;
file.open("Test.txt", fstream::in);
if (file.fail()) exit(-1);

vector<string> vec;
while (getline(file, line, '\n'))
{
string ln = line;
vec.push_back(ln);
}
file.close();

// manipulate your lines here

file.open("Test.txt", fstream::out | fstream::trunc);
for (vector<string>::iterator it = vec.begin(); it != vec.end(); ++it)
{
file.write(it->c_str(), it->length());
file.write("\n", 1);
}
file.close();
}

但是请注意,当您更改一条线时,除非您要更改的线与原始线的大小相同,否则后续线的位置也会发生变化。另请注意,这是一个简单的 ANSI 文件示例,但 UNICODE 和 UTF-8 也是常见的文本文件格式。这至少应该让您入门。

关于c++ - 如何逐行读取并覆盖同一文件中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33004066/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com