Считать текстовый файл в переменную класса - c ++ - PullRequest
0 голосов
/ 24 мая 2018

Итак ... Я попытался создать систему внутриигрового магазина, которая считывает баланс счета игрока из файла .txt, но я столкнулся с этой действительно странной проблемой

Итак.Этот int работает просто отлично.Он считывает данные из файла, преобразует строку в числовое значение и печатает их.

int main() {
    int money;
    string cash;

    ifstream playerdata;
    playerdata.open("player.txt");
    if (playerdata.is_open()) {
    getline(playerdata,cash);
    money = atoi(cash.c_str());
    } else cout<<"error";
    return money;
}

Пока этого нет.Всегда распечатывается, что наличные равны 0.

class Player {
    int money ;
    string cash;
    public:
        GetMoney();
        int PrintMoney() {return atoi(cash.c_str());};

};

Player::GetMoney(){
    int money;
    string cash;

    ifstream playerdata;
    playerdata.open("player.txt");
    if (playerdata.is_open()) {
    getline(playerdata,cash);
    money = atoi(cash.c_str());
    playerdata.close();
    } else cout<<"error";
}

int main() {

    Player a;
    cout<<"Your Money: "<<a.PrintMoney()<<"$";  
};

1 Ответ

0 голосов
/ 24 мая 2018

Ваша логика в main следующая:

  • Создание a типа Player.
  • Вызов PrintMoney() функции на a.

Ваша реализация функции PrintMoney не вызывает функцию GetMoney.В этом случае cash является пустой строкой.Вызов c_str для этой пустой строки приведет к тому, что пустое значение будет передано atoi, что вернет 0.

В зависимости от домена это выглядит правильно.У игрока еще нет денег.Возможно, после объявления a вам нужно вызвать a.GetMoney(), однако есть другие проблемы с вашим кодом, которые означают, что это не совсем работает.

Переменные money и cash в GetMoney функция будет переопределять переменные в классе Player.Вы должны удалить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...