首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件C++加载信息

从文件C++加载信息
EN

Stack Overflow用户
提问于 2016-11-22 12:31:48
回答 2查看 94关注 0票数 0

我有一个程序,可以将信息从文件加载到player类变量中。除了最后一个可变的玩家伤害外,一切都很好。

代码语言:javascript
复制
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();
}

以下是文件内容(最后一个是玩家伤害):

代码语言:javascript
复制
Allura;Password123;5.00;0.0;10.00

但是如果我登录并输入'stats':

除了损坏外,所有载荷都是正确的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-22 12:39:23

如果您只使用get行,您会使用什么附加程序?

代码语言:javascript
复制
        getline(UserFile, playername, ';');
        getline(UserFile, playerpass, ';');
        getline(UserFile, playercash, ';');
        getline(UserFile, playercoords, ';');
        getline(UserFile, playerdamage);

如果您想要整数或双值,那么在getline调用之后转换数据:

若要将字符串转换为int:

代码语言:javascript
复制
atoi( str.c_str() ) // C++ 98

std::stoi( str ) // C++ 11

若要将字符串转换为加倍,请执行以下操作:

代码语言:javascript
复制
atof( str.c_str() ) // C++ 98

std::stod( str ) // C++ 11

所以你得到了这样的东西:

代码语言:javascript
复制
        string playercoordsString;
        getline(UserFile, playercoordsString, ';');
        playercoords = std::stod(playercoordsString);
票数 1
EN

Stack Overflow用户

发布于 2016-11-22 12:55:58

问题是,您正在用“;”分隔值,其中>>运算符处理文件中的连续字符,而不知道分号是您的标记。

解决问题的最简单和最快的方法是在每次调用之后从文件中跳过一个字符。所以你会得到这样的代码:

代码语言:javascript
复制
UserFile >> playercash;
UserFile.ignore(1);
UserFile >> playercoords;
UserFile.ignore(1);
UserFile >> playerdamage;

这样,所有的转换仍然由流本身来处理--这对开发人员来说是好的,更少的编码。

另一种办法将需要更多的工作。基本上,根据docs,ifstream operator>>的工作方式与所描述的一样(简而言之)。

从流中依次提取和解析字符,将它们解释为适当类型的值的表示,该值存储为val的值。

示例中的变量是未知类型的,如果它们是用您自己的类型指定的,那么您可以重载ifstream operator>>。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40741943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档