首页 > 解决方案 > 阅读简单的 .txt 时,我得到了垃圾值

问题描述

我正在制作一个游戏,我想从 .txt 中读取怪物的属性。当我读取文件并将值放入变量时,这些变量会获取垃圾数据而不是 .txt 数据。这很奇怪,因为它只发生在我的主要项目中。我用相同的类创建了一个测试项目,并从字面上复制粘贴了代码,它在那里完美运行。

这是我的文件读取方法:

void Game::readMonsters() {

string monsterName, monsterFile = "";
int life, def, id = NULL;

ifstream monsters("assets/monsters.txt");

if (monsters) {

    monsters >> nMonsterTypes; // this variable exists in Game.h

    type = new MonsterType[nMonsterTypes](); // this object exists in Game.h


    for (int i = 0; i < nMonsterTypes; i++) {

        // all those variables are being set as memory garbage:

        monsters >> id;
        type[i].setID(id);

        monsters >> life;
        type[i].setHP(life);

        monsters >> def;
        type[i].setDefense(def);

        monsters >> monsterFile;
        type[i].setFile(monsterFile);

        monsters >> monsterName;
        type[i].setName(monsterName);

    }
}

monsters.close();

}

我很感激任何帮助!

标签: c++file

解决方案


在 Visual Studio 中使用断点,我注意到错误不在读取中,而是在“类型”数组的 get 方法中。当我应该在 0 和 nMonsterTypes - 1 之间(选择数组中的随机位置)时,我在 0 和 nMonsterTypes 之间做一个 rand。不过在这里得到了很好的建议,谢谢大家!


推荐阅读