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



所以...我试图制作一个游戏内商店系统,从文件中读取玩家的帐户余额.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()<<"$";  
};

您在main中的逻辑如下:

  • 创建类型Playera
  • a上调用PrintMoney()函数。

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

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

GetMoney函数中的moneycash变量将覆盖Player类中的变量。您应该删除这些。

最新更新