Форум программистов, компьютерный форум CyberForum.ru

Сохранение переменной в файл - C++

Восстановить пароль Регистрация
 
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
11.10.2013, 10:30     Сохранение переменной в файл #1
Переменную totalCounter, считываю из файла при старте программы и сохраняю файл при закрытии.
Конструктор работает нормально, на экран выводится значение, сохраненное в файл.
Не если раскомментировать деструктор, то выводится "-85899.."

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <fstream>
#include <iostream>
 
class C_Events {
  public:
      C_Events() : totalCounter(loadTotalCounter()) {}    
      ~C_Events() { saveTotalCounter(); }
 
    inline int loadTotalCounter() {
        std::ifstream infile("data/totalScore.txt");
        infile >> totalCounter;
        return totalCounter;
    }
 
    inline void saveTotalCounter() {
        std::ofstream outfile("data/totalScore.txt");
        outfile << totalCounter;
    }   
 
  private:
 
    int totalCounter;
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2013, 10:30     Сохранение переменной в файл
Посмотрите здесь:

C++ Сохранение в графический файл
Сохранение в файл C++
C++ сохранение в файл
Сохранение переменной в файл C++
C++ сохранение в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
calculon
 Аватар для calculon
14 / 14 / 3
Регистрация: 18.07.2012
Сообщений: 79
11.10.2013, 10:44     Сохранение переменной в файл #2
Это связано с тем, что некорректно написан конструктор и число не загружается. В файл сохраняется случайное значение. Так должно заработать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class C_Events {
  public:
      C_Events() : totalCounter(0) { loadTotalCounter(); }    
      ~C_Events() { saveTotalCounter();}
 
    inline void loadTotalCounter() {
        std::ifstream infile("score.txt");
        infile >> totalCounter;
    }
 
    inline void saveTotalCounter() {
        std::ofstream outfile("score.txt");
        outfile << totalCounter;
    }   
 
  private:
 
    int totalCounter;
};
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
11.10.2013, 10:56  [ТС]     Сохранение переменной в файл #3
Я так уже пробовал делать. В файл сам записал значение "5", если деструктор
закомментить, то 5 загружается, если раскоментить, то отображается -85899..

И это значение (-85899..) в файл не сохраняется, так 5 и остается
calculon
 Аватар для calculon
14 / 14 / 3
Регистрация: 18.07.2012
Сообщений: 79
11.10.2013, 11:08     Сохранение переменной в файл #4
Чудес не бывает. Деструктор никак не влияет на то, что происходит в конструкторе. В десятой студии, например, код работает.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
11.10.2013, 11:40  [ТС]     Сохранение переменной в файл #5
Как оказалось, тут дело в другом. Есть метод StartPoint, который вызывает методы первой и второй сцены игры.
Работа с файлами происходит во втором методе. Если первый закомментировать, то все работает, а иначе выводит -85899..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void C_GameCicle::startPoint() {
     callFunctionsForScene_1();
     callFunctionsForScene_2();
}
 
void C_GameCicle::callFunctionsForScene_1() {
    o_loadImages_C_GameCicle.loadImagesScene_1();
    o_drawScene_C_GameCicle.drawScene_1
        (&o_initSurfaces_C_GameCicle, &o_loadImages_C_GameCicle);
    o_sceneElements_C_GameCicle.scene_1_events
        (&o_initSurfaces_C_GameCicle, &o_loadImages_C_GameCicle);
    o_loadImages_C_GameCicle.quitImagesScene_1();   
}
 
void C_GameCicle::callFunctionsForScene_2() {
    o_loadImages_C_GameCicle.loadImagesScene_2();
    o_loadImages_C_GameCicle.ttfInit();
 
    o_drawScene_C_GameCicle.drawScene_2
        (&o_initSurfaces_C_GameCicle, &o_loadImages_C_GameCicle);
    o_drawScene_C_GameCicle.drawBeaver
        (&o_initSurfaces_C_GameCicle, &o_loadImages_C_GameCicle);
    o_sceneElements_C_GameCicle.scene_2_events
        (&o_initSurfaces_C_GameCicle, &o_loadImages_C_GameCicle);
 
    o_loadImages_C_GameCicle.ttfQuit();
    o_loadImages_C_GameCicle.quitImagesScene_2();
}
Добавлено через 12 минут
Разобрался, надо было еще в конструктор с параметрами этот метод вставить
Yandex
Объявления
11.10.2013, 11:40     Сохранение переменной в файл
Ответ Создать тему
Опции темы

Текущее время: 18:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru