Ersetzen Sie die Zeile in der txt-Datei c++

Ich Frage nur, weil ich eine text-Datei mit STATUS:USERID:PASSWORD in accounts.txt

Beispiel würde es so Aussehen:

OPEN:bob:askmehere:

ÖFFNEN:john:askmethere:

VERSCHLUSS:rob:robmypurse:

ich habe eine Benutzereingabe in meinem Haupt-als solcher kann der Benutzer login-3x anders-status ändert sich von OFFEN auf SCHLOSS

Beispiel nach 3 versucht der john

vor:

OPEN:bob:askmehere:

ÖFFNEN:john:askmethere:

VERSCHLUSS:rob:robmypurse:

nach:

OPEN:bob:askmehere:

VERSCHLUSS:john:askmethere:

VERSCHLUSS:rob:robmypurse:

was ich gemacht habe, ist:

void lockUser(Accounts& in){
//Accounts class consist 3 attributes (string userid, string pass, status)

ofstream oFile;
fstream iFile;
string openFile="accounts.txt";
string status, userid, garbage;
Accounts toupdate;

oFile.open(openFile);
iFile.open(openFile);

    while(!iFile.eof()){

        getline(iFile, status, ':');
        getline(iFile, userid, ':');
        getline(iFile, garbage, '\n');


        if(userid == in.getUserId()){

            toupdate.setUserId(in.getuserId());
            toupdate.setPassword(in.getPassword());
            toupdate.setStatus("LOCK");
            break;
    }

    //here i should update the account.txt how do i do that?
    ofile.open(openFile);

    ofile<<toupdate.getStatus()<<":"<<toupdate.getUserId()":"<<toupdate.getPassword()<<":"<<endl;
}
  • Entweder Lesen Sie die gesamte Datei, und ersetzen Sie die passenden Worte in Erinnerung, oder setzen Sie den cursor in die Datei an der richtigen Stelle, und ersetzen Sie das Wort.
  • Nicht while (!iFile.eof()) es sei denn, weil du vorsichtig bist, wird es nicht so funktionieren wie Sie es erwarten. Der Grund dafür ist, dass die eofbit flag nicht gesetzt ist, bis Sie versuchen, zu Lesen über die Datei, führt die Schleife zu iterieren, einmal für viele. Statt z.B. while (std::getline(...))
InformationsquelleAutor isme | 2015-01-23
Schreibe einen Kommentar