Schreiben und Lesen von Datensätzen zu .dat-Datei C++

Ich bin ziemlich neu in C++ und versuche zu arbeiten, wie schreiben eines Datensatzes in das format dieser Struktur unter, um eine text-Datei:

struct user {
    int id;
    char username [20];
    char password [20];
    char name [20];
    char email [30];
    int telephone;
    char address [70];
    int level;
}; 

So weit, dass ich in der Lage bin, zu schreiben, um es gut, aber ohne eine Inkrementierte id-Nummer, die ich nicht wissen, wie zu erarbeiten, die Anzahl der Datensätze, sodass die Datei wie folgt aussieht, nachdem ich geschrieben habe, die Daten in die Datei.

1 Nick pass Nick email tele address 1
1 user pass name email tele address 1
1 test test test test test test 1
1 user pass Nick email tele addy 1
1 nbao pass Nick email tele 207 1

Verwenden Sie den folgenden code:

ofstream outFile;

outFile.open("users.dat", ios::app);

//User input of data here

outFile << "\n" << 1 << " " << username << " " << password << " " << name << " "
        << email << " " << telephone << " " << address  << " " << 1;
cout << "\nUser added successfully\n\n";

outFile.close();

So, wie kann ich die erhöhen Sie den Wert für jeden Datensatz auf einfügen und wie dann das Ziel einen bestimmten Datensatz in der Datei?

EDIT: ich habe soweit in der Lage, die Anzeige jeder Zeile:

  if (inFile.is_open())
    {
    while(!inFile.eof())
    {

    cout<<endl;
    getline(inFile,line);
    cout<<line<<endl;

    }
    inFile.close();
    }
hat deine Datei muss Klartext sein? Wird Ihr format ermöglichen die Entfernung von Gegenständen?
verwenden std::string statt C-Stil char* Streicher und weglassen der <<" " beim Lesen (es wird Essen automatisch ein Leerzeichen).
Verwendung von C-Stil char * auch automatisch isst weißen Raum. Außerdem << ist zum schreiben, nicht Lesen.
Nach kann ich einen Datensatz auswählen, ich werde dann implementieren, die Fähigkeit zum Bearbeiten und löschen eines Datensatzes.
Die Dinge beginnen zu brechen, wenn Sie username/password/name/E-Mail/Adresse enthalten, die ein Leerzeichen.

InformationsquelleAutor nbaosullivan | 2012-05-04

Schreibe einen Kommentar