Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Typ

Frischling

  • »Typ« ist der Autor dieses Themas
  • Private Nachricht senden

1

19.05.2016, 10:40

Array in Datei schreiben mit fstream

Hallo,
ich würde gerne das Array einer Klasseninstanz in eine Datei schreiben. Am besten mit fstream.
Hier mal der Beispiel-Code, damit man besser versteht was ich machen will:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
#include <fstream>
#include <string>

#include "user.hpp"

using namespace std;

// prototypes
void menu();
void createFiles();


#pragma once
int main()
{
    // variables
    bool running = true;    // while running = true, program is running
    // query actual ID (the number of already existing users
    int actualID = 0;
    ifstream input("actualNumber.id", ios::binary);
    input.read((char*)&actualID, sizeof(actualID));
    input.close();
    // create array of instances of user
    CUser* user[10];  // <----- DIESES ARRAY SOLL IN DIE DATEI GESCHRIEBN WERDEN

    // main course
    while (running)
    {
        // print out a menu
        menu();
        // query
        int selection;
        std::cin >> selection;

        switch (selection)
        {
        case 1:    // create a new user
            char name[30];                                              // name of new user
            char position[30];                                          // position of new user
            // clear BUFFER and get input
            cin.clear();
            cin.ignore(INT_MAX, '\n');
            std::cout << "Name:\t";     cin.get(name, 29);              // ask for the user's name
            // clear BUFFER and get input
            cin.clear();
            cin.ignore(INT_MAX, '\n');
            std::cout << "Position:\t"; cin.get(position, 29);          // ask for the user's position
            // create new instance
            user[actualID] = new CUser();
            user[actualID]->Init(name, position);

            // update actual number of IDs
            actualID++;
            break;

        case 4:     // stop program and save all changed datas
            ofstream output("actualNumber.id", ios::binary);
            output.write((char*)&actualID, sizeof(actualID));
            output.close();

            // stop program
            running = false;
        }
    }
    return 0;
}


// print out the menu
void menu()
{
    std::cout << "Bitte waehle die gewuenschte Option aus:\n";
    std::cout << "\t1: Neuen Benutzer anlegen\n";
    std::cout << "\t2: Lager verwalten\n";
    std::cout << "\t3: Statistik ansehen\n";
    std::cout << "\t4: Programm beenden\n";
}

// create all required folders (only call when first use of program)
void createFiles()
{
    // actual ID
    int actualID = 0;
    ofstream output("actualNumber.id", ios::binary);
    output.write((char*)&actualID, sizeof(actualID));
    output.close();
}   


Das Array, das ich in die Datei schreiben will steht in Zeile 25.

Hoffe ihr könnt mir helfen

Mfg
Typ

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

19.05.2016, 10:57

Das ist eine sehr unpräzise Problembeschreibung.
Du schreibst doch schon diverse Dateien "actualNumber.id", warum also nicht nach dem gleichen Prinzip? Mal die Doku zu fstream gelesen?