将文本文件读入 class 变量 - C++
Read text file into class variable - 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
中的逻辑如下:
- 创建
a
类型 Player
。
- 在
a
上调用 PrintMoney()
函数。
您对 PrintMoney
函数的实现没有调用 GetMoney
函数。在这种情况下,cash
是一个空字符串。在这个空字符串上调用 c_str
将导致一个空值被传递给 atoi
,这将 return 一个 0.
根据域,这似乎是正确的。玩家还没有任何钱。也许在声明 a
之后您需要调用 a.GetMoney()
,但是您的代码存在其他问题,这意味着这将无法正常工作。
GetMoney
函数中的money
和cash
变量将覆盖Player
[=42]中的变量=].你应该删除这些。
所以...我尝试制作一个游戏内商店系统,从 .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
中的逻辑如下:
- 创建
a
类型Player
。 - 在
a
上调用PrintMoney()
函数。
您对 PrintMoney
函数的实现没有调用 GetMoney
函数。在这种情况下,cash
是一个空字符串。在这个空字符串上调用 c_str
将导致一个空值被传递给 atoi
,这将 return 一个 0.
根据域,这似乎是正确的。玩家还没有任何钱。也许在声明 a
之后您需要调用 a.GetMoney()
,但是您的代码存在其他问题,这意味着这将无法正常工作。
GetMoney
函数中的money
和cash
变量将覆盖Player
[=42]中的变量=].你应该删除这些。