在记事本中编辑/替换值文件

问题描述

当我编辑该值时,它不会替换记事本中的原始值。 c++ - 如何在不显示旧数据的情况下更新c ++文件中的数据?我想删除特定数据并更新。

str_ID = to_string(ID);

cout<<"\tEnter ID to edit: ";
cin>>value;
if(value == str_ID){
    cout<<"\tThe Member is available"<<endl;
    ifstream myfile2;//File to read from
    myfile2.open("editfile.txt");

    ofstream temp; //Temporary file
    temp.open("temp.txt");
    while (getline(myfile2,line))
    {
        if (line != str_ID)
            temp << line << endl;
    }
    while (getline(myfile2,line)){
        line.replace(line.find(str_ID),str_ID.length(),"");
        temp<<line<<endl;
    }

    myfile2.close();
    temp.close();
    remove("editfile.txt");
    rename("temp.txt","editfile.txt");

    cout<<"\tEnter name :";
    cin>>name;

    cout << "\tENTER IC : ";
    cin>> IC;
    cout << "\tENTER AGE : ";
    cin>> age;

    cout << "\tENTER GENDER (F / M): ";
    cin>> gender;

    ofstream myfile;
    myfile.open("editfile.txt",ios::app | ios::out);
    myfile<<ID;
    myfile<<"\t"<<name;
    myfile<<"\t"<<IC;
    myfile<<"\t"<<gender<<endl;
}

解决方法

如果在外部更改,请在记事本中重新加载文件!

,

我根据您的代码编写了一个测试程序。希望能帮到你。

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

using namespace std;

int main()
{
    string value;
    string str_ID = "123"; //. assume to_string(ID)

    cout << "\tEnter ID to edit: ";
    cin >> value;

    if (value == str_ID)
    {
        ifstream myfile2("editfile.txt");
        ofstream temp("temp.txt");
        string name,IC,age,gender;

        cout << "\tEnter name: ";
        cin >> name;

        cout << "\tEnter IC: ";
        cin >> IC;

        cout << "\tEnter Age: ";
        cin >> age;

        cout << "\tEnter GENDER (F / M): ";
        cin >> gender;

        string line;
        while (getline(myfile2,line))
        {
            if (line.find(str_ID) != string::npos)
            //. or like this: if (line.substr(0,str_ID.length()) == str_ID)
            {
                temp << str_ID << "\t" << name << "\t" << IC << "\t" << gender << endl;
            }
            else
            {
                temp << line << endl;
            }
        }

        myfile2.close();
        temp.close();

        remove("editfile.txt");
        rename("temp.txt","editfile.txt");
    }

    return 0;
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...