【问题标题】:Find and Modify txt File in C++在 C++ 中查找和修改 txt 文件
【发布时间】:2014-02-08 08:44:26
【问题描述】:

我想从文件中找到特定的id 并修改内容。
这是我想要的原始代码。

// test.txt

id_1
arfan
haider

id_2
saleem
haider

id_3
someone
otherone

C++ 代码:

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

using namesapce std;

int main(){
     istream readFile("test.txt");
     string readout;
     string search;
     string Fname;
     string Lname;

     cout<<"Enter id which you want Modify";
     cin>>search;

     while(getline(readFile,readout)){
        if(readout == search){
           /*
                id remain same (does not change)
                But First name and Last name replace with
                user Fname and Lname
           */
            cout<<"Enter new First name";
                 cin>>Fname;
            cout<<"Enter Last name";
                 cin>>Lname;  
        }
    }
}  

假设:
用户搜索 ID *id_2*。在该用户之后输入名字和姓氏 ShafiqAhmed
运行此代码后,test.txt 文件必须像这样修改记录:

...............
...............

id_2
Shafiq
Ahmad

.................
.................

只有id_2 记录更改保留文件将是相同的。
更新:

#include <iostream>
#include <string.h>
#include <fstream>

using namespace std;

int main()
{
ofstream outFile("temp.txt");
ifstream readFile("test.txt");

string readLine;
string search;
string firstName;
string lastName;

cout<<"Enter The Id :: ";
cin>>search;

while(getline(readFile,readLine))
{
    if(readLine == search)
    {
        outFile<<readLine;
        outFile<<endl;

        cout<<"Enter New First Name :: ";
        cin>>firstName;
        cout<<"Enter New Last Name :: ";
        cin>>lastName;

        outFile<<firstName<<endl;
        outFile<<lastName<<endl;
    }else{
        outFile<<readLine<<endl;
    }
}
}

它还在temp.txt 文件中包含先前的名字和姓氏。

【问题讨论】:

    标签: c++ file search replace


    【解决方案1】:

    找到具体的id并写入新的名和姓后,需要跳过以下两行。此代码有效:

    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    void skipLines(ifstream& stream, int nLines)
    {
        string dummyLine;
        for(int i = 0; i < nLines; ++i)
            getline(stream, dummyLine);
    }
    
    int main()
    {
        ofstream outFile("temp.txt");
        ifstream readFile("test.txt");
    
        string readLine;
        string search;
        string firstName;
        string lastName;
    
        cout<<"Enter The Id :: ";
        cin>>search;
    
        while(getline(readFile,readLine))
        {
            if(readLine == search)
            {
                outFile<<readLine;
                outFile<<endl;
    
                cout<<"Enter New First Name :: ";
                cin>>firstName;
                cout<<"Enter New Last Name :: ";
                cin>>lastName;
    
                outFile<<firstName<<endl;
                outFile<<lastName<<endl;
                skipLines(readFile, 2);
            }
            else
            {
                outFile<<readLine<<endl;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      相关资源
      最近更新 更多