我有一个程序,可将文件中的信息加载到播放器类变量中。除了最后一个可变玩家伤害之外,其他所有方法都工作正常。

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”:

c++ - 从文件C++加载信息-LMLPHP

除损坏外,所有负载均正确加载。

最佳答案

如果仅使用获取行会怎样?

        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);

09-20 22:54