我有一个程序,可将文件中的信息加载到播放器类变量中。除了最后一个可变玩家伤害之外,其他所有方法都工作正常。
void Player::loadplayer(std::string name)
{
std::ifstream UserFile;
UserFile.open(name + ".txt");
if (UserFile.is_open())
{
while (UserFile.good())
{
getline(UserFile, playername, ';');
getline(UserFile, playerpass, ';');
UserFile >> playercash;
UserFile >> playercoords;
UserFile >> playerdamage;
}
}
UserFile.close();
}
以下是文件内容(播放器损坏为最后一个):
Allura;Password123;5.00;0.0;10.00
但是,如果我登录并输入“ stats”:
除损坏外,所有负载均正确加载。
最佳答案
如果仅使用获取行会怎样?
getline(UserFile, playername, ';');
getline(UserFile, playerpass, ';');
getline(UserFile, playercash, ';');
getline(UserFile, playercoords, ';');
getline(UserFile, playerdamage);
如果要在getline调用后将整数或双精度值转换为数据,请执行以下操作:
要将字符串转换为int:
atoi( str.c_str() ) // C++ 98
std::stoi( str ) // C++ 11
要将字符串转换为双精度:
atof( str.c_str() ) // C++ 98
std::stod( str ) // C++ 11
所以你得到这样的事情:
string playercoordsString;
getline(UserFile, playercoordsString, ';');
playercoords = std::stod(playercoordsString);