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;
}