Stránka 1 z 1

C++ - ukládání dynamické proměné do souboru

Napsal: čtv 8. pro 2011, 01:32
od tomi88
zdravím,
pracuju na semestrální práci a už jsem téměr na konci jen mám teď problém s ukládáním a načítáním dat ze souboru. Na začátku souboru bych potřeboval načíst do STL konterneru data a po ukončení je nahrát zase do souboru.

Děkuju za jakoukoliv pomoc :)

Kód: Vybrat vše

#include <iostream>
#include <vector>
#include <fstream>
#include "Priklad.h"
using namespace std;

void vypisHistorie(vector<Priklad* > & historiePrikladu);
void uvolniPamet(vector<Priklad* > & historiePrikladu);
void nacteniHistorieZeSouboru(vector<Priklad* > & historiePriklad);
void ulozeniHistorieDoSouboru(vector<Priklad* > & historiePriklad);

int main() {
    char operand;
    vector<Priklad* > historiePrikladu;

    //void nacteniHistorieZeSouboru(historiePrikladu);

    cout << "Vyber operaci: ";
    cin.get(operand);


    while (!(operand == 'e')) {
        int op1, op2, cislo;
        switch (operand) {
            case '+':
                cout << "Zadej prni operand: ";
                cin >> op1;
                cout << "Zadej druhy operand: ";
                cin >> op2;

                historiePrikladu.push_back(new Soucet(op1, op2));
                break;
            case '-':
                cout << "Zadej prni operand: ";
                cin >> op1;
                cout << "Zadej druhy operand: ";
                cin >> op2;

                historiePrikladu.push_back(new Rozdil(op1, op2));
                break;
            case '*':
                int op1, op2;
                cout << "Zadej prni operand: ";
                cin >> op1;
                cout << "Zadej druhy operand: ";
                cin >> op2;

                historiePrikladu.push_back(new Nasobeni(op1, op2));
                break;
            case '/':
                cout << "Zadej delenec: ";
                cin >> op1;
                cout << "Zadej delitel: ";
                cin >> op2;

                historiePrikladu.push_back(new Deleni(op1, op2));
                break;
            case 'o':
                cout << "Zadej cislo ktere chces odmocnit: ";
                cin >> cislo;

                historiePrikladu.push_back(new DruhaOdmocnina(cislo));
                break;
            case 'v':
                //samostatna fce
                vypisHistorie(historiePrikladu);
                break;
        }

        cout << "Vyber operaci: ";
        cin.get(operand);
    }

	ulozeniHistorieDoSouboru(historiePrikladu);

    //uvolneni pameti
    uvolniPamet(historiePrikladu);

    return 0;
}

void vypisHistorie(vector<Priklad* > & historiePrikladu) {
    for (vector<Priklad* >::iterator it = historiePrikladu.begin(); it != historiePrikladu.end(); it++) {
        (*it)->vypis();
    }
}

void uvolniPamet(vector<Priklad *> & historiePrikladu) {
    for (vector<Priklad* >::iterator it = historiePrikladu.begin(); it != historiePrikladu.end(); it++) {
        delete *it;
    }
}

void nacteniHistorieZeSouboru(vector<Priklad* > & historiePriklad)
{

}

void ulozeniHistorieDoSouboru(vector<Priklad* > & historiePriklad)
{
	ofstream fout("historie.dat", ios::out | ios::app | ios::binary);

	if (!fout.is_open())
	{
		cerr << "Soubor historie.dat nelze otevyit pro vystup:\n";
		exit(1);
	}

	for(vector<Priklad* >::iterator it = historiePriklad.begin(); it != historiePriklad.end(); it++)
	{
		//fout.write(reinterpret_cast<char*> (*it), sizeof(*it));
	}
}