我在阅读简单的.txt时会得到垃圾值

时间:2018-04-24 18:19:02

标签: c++ file

我正在制作一个游戏,我想从.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();

}

我感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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