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

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
tomi88
Nováček
Nováček
Registrován: 28. čer 2009
Bydliště: židle u kompa ;-)

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

Příspěvek 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));
	}
}

Nemáte oprávnění prohlížet přiložené soubory.
PC: CPU: Intel Core i5 2500K(4.3GHz) + Scythe Infinity; Gk: 2x ATI Radeon HD 5770 Cross-fire; RAM: Kingston 2x2GB 1600MHz DDR3; HDD: 2x Seagate Barracuda 320GB + WD 2TB; MB: ASUS P8P67 EVO OS:Windows 7 Profesional x64

Notebook: Asus EEE 1000H OS: Ubuntu
Odpovědět

Zpět na „Programování a web“