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

I'm getting garbage values when reading a simple .txt

本文关键字:txt 简单 一个      更新时间:2023-10-16

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

我感谢任何帮助!

使用与Visual Studio的断点,我注意到错误不是在读取中,而是在"类型"数组的GET方法中。当我应该在0和nmonstertypes之间进行0时,我正在制作0和NmonsterTypes之间的rand -1(在数组中选择一个随机位置(。不过,这里有很好的建议,谢谢大家!