gpt4 book ai didi

c++ - 从文件 C++ 中替换整行

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:59 26 4
gpt4 key购买 nike

所以我一直在研究代码,并且一直在寻找如何替换找到的行。我能够找到名称并将“new_gpa”添加到该部分,但它会在同一文件中输出最终结果,但不会替换原始分数和名称。

我怎样才能删除与 gpa 一起找到的原始行?并将新值存储到文件中。

cristian 2.1
rachel 3.0

姓名搜索:克里斯蒂安

新文件:

cristian 2.1
rachel 3.0
cristian 4.1

代码如下。

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <sstream>
#include <cstring>
using namespace std;


int main()
{
string name;
int offset;
string line;

ifstream read_file;
read_file.open("alpha.dat", std::ios_base::app);
cout << "Please enter your name: \n";
cin>> name;

if (read_file.is_open())
{
while(!read_file.eof())
{
getline(read_file,line);

if((offset = line.find(name)) != string::npos)
{
cout <<"the word has been found: \n";
//cout << line //example to display
//new code
istringstream iss ( line );
string thisname;
double gpa;
double new_gpa = 2.1;

if( iss >> thisname >> gpa)
{
if (thisname == name)
{
cout << name <<endl;
cout << gpa <<endl;
ofstream myfile;
myfile.open("alpha.dat",std::ios_base::app);
myfile << " \n" << name << " " << gpa+ new_gpa;
myfile.close();
read_file.close();
}
}
}
}
}
return 0;
}

最佳答案

您使用 std::ios_base::app 打开文件,这意味着您所有的输出操作都在文件末尾执行,将内容附加到当前文件。但是你要做的是在原来的地方修改数据。因此,您应该使用 std::ios_base::in 打开文件,函数 seekp 可以帮助您进行下一步。

关于c++ - 从文件 C++ 中替换整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21744244/

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