Итак, я все еще довольно новичок в программировании в целом, поэтому я могу просто упустить что-то, что очевидно для всех остальных. При этом я пытаюсь просто распечатать простую карту из текстового файла, но сначала хочу загрузить информацию в вектор. Проблема в том, что я загружаю только последнюю строку. Я использую curses для печати и всего такого.
Вот код 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();
}
}
Это мой основной()
int main()
{
LevelControl currentLevel;
initscr();
currentLevel.loadLevel("level.txt");
bool loopGame = true;
while(loopGame)
{
currentLevel.printLevel();
getch();
}
endwin();
return 0;
}
Это карта, которую я пытаюсь распечатать, и именно так она написана в текстовом файле:
#########*
#........#
#........#
#........#
#........#
#........#
#........#
#........#
#........#
##########
Вместо этого все, что я получаю, это:
##########
Так что да... понятия не имею, почему он читает только последнюю строку. Я видел много примеров использования getline в цикле while для печати всего файла. Я просто не знаю, почему я не могу вернуть все это в вектор. Моя функция печати проверяет размер вектора, и я всегда получаю 1. Так что я почти уверен, что моя функция печати работает (или, по крайней мере, не вызывает эту проблему, ха-ха)
В любом случае любая помощь очень ценится!!
refresh();
? - person GMichael   schedule 18.04.2016loadedLevel.size()
? - person John Zwinck   schedule 18.04.2016loadedLevel.size() == 1
даже в конце вашей функцииloadLevel()
? Если это так, попробуйте выполнить эту функцию, чтобы увидеть, что не так. - person John Zwinck   schedule 18.04.2016