danie nie są widoczne w pliku

0

Witam mam klasę plik i jest ona odpowiedzialna za to by sprawdzić czy plik istnieje. Później mam sprawdzić czy plik jest pusty jeśli jest to użytkownik mam wprowadzić trzy zmienne i później są one wpisywane do pliku. I to działa ale jak ponownie odpalam program to reszta programu nie umie z pliku odczytać tych wartości które podałem przy wcześniejszym odpaleniu programu.

main.cpp

 #include "file.h"
#include "menu.h"
#include "transactions.h"
#include "clock.h"
#include <iostream>
#include <string>

int main()
{
    File file;
    Menu menu;
    Transactions transaction;
    file.open();
    std::cout << "Show budget: " << file.get_budget() << std::endl;
    do
    {
        int choice = menu.show();
        switch (choice)
        {
//            case 1:
//                budget = transaction.cash(budget);

        }

    } while (menu.end() == 1 );
    file.close();
    return 0;
}

file.h

#ifndef FILE_H
#define FILE_H
#include <fstream>
#include "clock.h"


class File
{
private:
    Clock clock;
    std::fstream my_file;
    double budget = {};
    double smart_saver_mateusz = {};
    double smart_saver_justyna = {};
public:
    File();
    ~File();
    void open();
    void read_out();
    void close();
    void append_start_data();
    bool empty();

    inline int get_budget() { return budget*100; }
    inline int get_smart_saver_mateusz() { return smart_saver_mateusz*100; }
    inline int get_smart_saver_justyna() { return smart_saver_justyna*100; }

};

#endif // FILE_H

file.cpp

 #include "file.h"
#include "clock.h"
#include <fstream>
#include <iostream>
#include <fstream>
#include <string>

File::File()
{
    std::cout << "Object is being created" << std::endl;
}
File::~File()
{
    std::cout << "File Object is being deleted " << std::endl;
}
//==================================================================
void File::open() // sprawdzanie czy istnieje i czy mozna go otworzyc
{
    my_file.open( clock.date_file() , std::ios::in | std::ios::app | std::ios::out );
    if ( my_file.is_open() == true)
    {
        if (empty())
        {
            append_start_data();
        }
        else
            read_out();
//        std::cout << "File open " << std::endl;
    }
    else
    {
        std::cerr << "Unable to open file" << std::endl;
        exit(EXIT_FAILURE);
    }
}
//==================================================================
void File::read_out()  //odczyt
{
    std::string line;
    int number_line = 1;
    while ( std::getline ( my_file , line) )
    {
        switch ( number_line )
        {
            case 1: budget = std::stod( line.c_str() ); break;
            case 2: smart_saver_mateusz = std::stod( line.c_str() ); break;
            case 3: smart_saver_justyna = std::stod( line.c_str() ); break;
        }
        ++number_line;
    }
}
//====================================================================
void File::close()
{
    my_file.close();
    std::cout << "File is being closed" << std::endl;
}
//==================================================================
void File::append_start_data()
{
    std::cout << "Provide budget: ";
    std::cin >> budget;
    my_file << budget << std::endl;
    std::cout << std::endl;
    std::cout << "Provide smart saver mateusz: ";
    std::cin >> smart_saver_mateusz;
    my_file << smart_saver_mateusz << std::endl;
    std::cout << std::endl;
    std::cout << "Provide smart saver justyna: ";
    std::cin >> smart_saver_justyna;
    my_file << smart_saver_justyna << std::endl;
    std::cout << std::endl;
}
//==================================================================
bool File::empty()
{
    my_file.seekg(0, std::ios::end);
    size_t size = my_file.tellg();
    if (size == 0)
        return true;
    else
        return false;
}
0

Naucz się korzystać z debuggera. Wklejasz cały kod do analizy na forum, choć to powinno być twoje zajęcie.

reszta programu nie umie z pliku odczytać tych wartości
Co to znaczy? Wywal się program, bo czyta nie to co trzeba?
0

Powiedzmy ze jako budżet podaje 800 ale po ponownym odpaleniu programu mam 0. W pliku txt jest 800.

0

Napisz mały program testowy i odczytaj te dane z pliku.
Później przenieś programik testowy do wykonania w klasie.

1

Już doszedłem chodziło o ustawienie kursora na koniec pliku

1 użytkowników online, w tym zalogowanych: 0, gości: 1