将文本文件读入类变量 - c ++

时间:2018-05-24 14:20:28

标签: c++ class fstream getline atoi

所以......我试图制作一个游戏商店系统,从.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 :(得分:1)

main中的逻辑如下:

  • 创建a类型的Player
  • PrintMoney()上调用a功能。

PrintMoney函数的实现不会调用GetMoney函数。在这种情况下,cash是一个空字符串。在此空字符串上调用c_str将导致将空值传递给atoi,这将返回0。

根据域名,这似乎是正确的。玩家还没有钱。也许在声明a之后您需要致电a.GetMoney(),但是您的代码还存在其他问题,这意味着这不会有效。

money函数中的cashGetMoney变量将覆盖 Player类中的变量。你应该删除这些。