Чтение данных из txt файла в векторы - PullRequest
1 голос
/ 31 марта 2020

Я пытался использовать vectors вместо массивов в одной из частей моей программы из-за других проблем. Я никогда не использовал их ранее.

Это часть кода:

#include <vector>

ifstream file("data.txt");
vector<int> beds;
vector<int> people;
vector<int> balconies;

while(!file.eof()){
    file >> people.push_back();
    file >> beds.push_back();
    file >> balconies.push_back();
}

Я понятия не имею, будет ли это работать. В любом случае теперь у меня есть ошибка: No matching member function for call to 'push_back'.

Ответы [ 2 ]

3 голосов
/ 31 марта 2020

Метод std::vector::push_back принимает аргумент, который является значением, добавляемым в конец вектора. Таким образом, вам нужно разбить каждый из этих вызовов на два этапа: сначала прочитайте значение в int, затем push_back это значение в вектор.

while(!file.eof()){
    int temp;
    file >> temp;
    people.push_back(temp);
    file >> temp;
    beds.push_back(temp);
    file >> temp;
    balconies.push_back(temp);
}

Как упоминалось в комментариях, я хотел бы предложить против вашего while условия, как написано. Этот пост подробно объясняет, почему, наряду с предоставлением лучших альтернатив.

1 голос
/ 31 марта 2020

Сохраните входные данные внутри переменной до, а затем pu sh этой переменной

int example;
file >> example;
people.push_back(example);

или используйте std :: istream_iterator

...