Как добавить объекты в вектор, используя данные из текстового файла - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть список игр в текстовом файле следующим образом:

MMO League Of Legends 
MMO World Of Warcraft 
Strategy Civilization 
Strategy Hearthstone 
Arcade Street Fighter 
Arcade PacMan 
AR Beat Saber 
AR Superhot 

Моя проблема в том, что я хочу создавать объекты, используя эти категории и имена, я хочу читать построчно.

Например, я хочу прочитать первую строку и, когда он видит слово MMO, создать объект MMO с именем League of legends. То же самое с другими категориями. У меня уже есть все классы и конструкторы.

Затем мне нужно сохранить все объекты в следующем векторе

vector <Game*> games;

Пока это моя основная функция

int main()
{

ifstream inFile;

inFile.open("Games.txt");   //Open the file

if (!inFile) {  //Check that file was opened successfully
    cout << "Unable to open file";
    exit(1);
}
string line;
if (inFile.is_open()) {

    while (std::getline(inFile, line)) {



    }

}

Спасибо за вашу помощь, я с самого утра работаю над этой программой, и эта часть действительно поставила меня в тупик!

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Одно из возможных решений - начать читать строку за строкой в ​​std::string (как вы делаете сейчас). Тогда у вас действительно есть два варианта:

  1. Поместите эту строку в std::istringstream и извлеките первое слово, разделенное пробелом (используя обычный оператор >>) а затем std::getline, чтобы получить остаток строки в отдельную строку.

  2. Найдите первый пробел и используйте substr функция, позволяющая получить первое слово и остаток строки в отдельные строки.

Получив две отдельные строки, вы можете создать структуру, используя их.

0 голосов
/ 19 апреля 2020

Разделите строку по первому пробелу:

string::size_type pos;
pos=first.find(' ',0);
category=first.substr(0,pos);
name=first.substr(pos+1);

Создайте новый игровой объект с ключевым словом new и добавьте его к своему вектору

games.push_back(new Game(category,name))

Я полагаю, ваш игровой объект имеет конструктор, принимающий два параметра: категорию и имя

...