【发布时间】:2016-04-18 04:17:58
【问题描述】:
好吧,总的来说,我对编码还很陌生,所以我可能只是遗漏了一些对其他人来说显而易见的东西。话虽如此,虽然我试图从文本文件中打印一个简单的地图,但我想先将信息加载到矢量中。问题是我似乎只加载最后一行。我正在使用诅咒进行打印等等。
这里是 LevelControl 代码,我现在只有加载函数和:
void LevelControl::loadLevel(string levelName)
{
ifstream level;
string transferLine;
level.open(levelName);
if(level.fail()){perror("Level");}
while(getline(level, transferLine));
{
int counter = 0;
loadedLevel.push_back(transferLine);
printw("\n");
counter++;
transferLine.clear();
}
}
void LevelControl::printLevel()
{
int mapSizeX = loadedLevel.size();
string loadedString;
for(int i = 0; i < mapSizeX; i++ )
{
loadedString = loadedLevel[i];
mapSizeY = loadedString.size();
printw("%s \n", loadedString.c_str());
refresh();
loadedString.clear();
}
}
这是我的 main()
int main()
{
LevelControl currentLevel;
initscr();
currentLevel.loadLevel("level.txt");
bool loopGame = true;
while(loopGame)
{
currentLevel.printLevel();
getch();
}
endwin();
return 0;
}
这是我要打印的地图,它在 txt 文件中的写法是这样的:
#########*
#........#
#........#
#........#
#........#
#........#
#........#
#........#
#........#
##########
我得到的只是:
##########
所以是的...不知道为什么它只读取最后一行。我已经看到了许多在 while 循环中使用 getline 来打印整个文件的示例。我只是不知道为什么我不能将它全部推回向量。我的打印功能检查向量的大小,我总是得到 1。所以我很确定我的打印功能正在工作(或者至少不会导致这个问题哈哈)
非常感谢任何帮助!
【问题讨论】:
-
给我们所有的代码和文件的样子
-
如何打印?
-
我刚刚编辑了它以显示我到目前为止所拥有的一切
-
refresh();是做什么的? -
请阅读发布指南:您应该提取一个最小但完整的示例,以便每个人都可以重现您的问题。