Problem mit ofstream und ifstream



  • Hallo,
    ich mache mich gerade mit ofstream und ifstream vertraut, aber irgendwie klappt es noch nicht so richtig. Das Problem ist, dass nicht die richtige Variable wieder ausgelesen wird, bzw nicht den richtigen Wert hat.

    #include <iostream>
    #include <fstream>
    #include <string.h>
    
    using namespace std;
    
    int main()
    {
    	int size_min, size_max;
    	int weight_min, weight_max;
    	char file[30];
    
    	cout << "Name of file: ";
    	cin >> file;
    
    	strcat(file, ".blub");
    
    	ofstream Output(file, ios::binary);
    	Output.write((char*) &file, sizeof(file));
    
    	cout << "Minimal and maximal size" << endl;
    	cout << "Min: ";
    	cin >> size_min;
    	cout << "Max: ";
    	cin >> size_max;
    
    	Output.write((char*) &size_min, sizeof(size_min));
    	Output.write((char*) &size_max, sizeof(size_max));
    
    	cout << "Minimal and maximal weight" << endl;
    	cout << "Min: ";
    	cin >> weight_min;
    	cout << "Max: ";
    	cin >> weight_max;
    
    	Output.write((char*) &weight_min, sizeof(weight_min));
    	Output.write((char*) &weight_max, sizeof(weight_max));
    
    	Output.close();
    
    	size_max = 0;
    
    	ifstream Input(file);
    	Input.read((char*) &size_max, sizeof(size_max));
    	Input.close();
    
    	cout << size_max;
    
    	return 0;
    }
    

    Es kommt halt irgendein Wert raus, der aber absolut nix mit den gespeicherten Werten zu tun. Hoffe ihr könnt mir helfen.



  • Output.write((char*) &file, sizeof(file));
    

    Du schreibst am Anfang den Dateinamen in die Datei und zum Schluss liest du ganz am Anfang aus. Deine Werte haben also sehr wohl etwas mit den gespeicherten Werten zu tun ;).



  • oh okay...
    Wie kann ich denn den variablennamen in verbindung mit dessen wert in eine datei schreiben, sodass ich irgendeine variable irgendwo in der datei wieder auslesen kann?


  • Administrator

    Cloppy schrieb:

    oh okay...
    Wie kann ich denn den variablennamen in verbindung mit dessen wert in eine datei schreiben, sodass ich irgendeine variable irgendwo in der datei wieder auslesen kann?

    Dazu brauchst du ein Serialisierungsformat. Such mal nach Serialisierung oder schau dir Boost.Serialization an.

    Was du machst ist einfach nur Byte für Byte schreiben und dann über den ifstream Byte für Byte lesen. Mehr wird da nicht gemacht. Die Variablennamen sind da völlig irrelevant.

    Grüssli


Anmelden zum Antworten