Ваш C ++ выглядит на правильном пути, кроме двух вещей. Во-первых, вы должны где-то определить форму структуры CollectedData, а во-вторых, вы должны дать имя своей переменной структуры:
Например, если вы определите структуру CollectedData следующим образом:
struct CollectedData {
int field1;
std::string field2;
bool field3;
// etc
};
Тогда в вашем внутреннем цикле вы можете сделать это
while( getline(myFile, line) ) {
CollectedData lineData;
//add property values
lineData.field1 = /*whatever*/;
lineData.field2 = /*whatever*/;
lineData.field3 = /*whatever*/;
//add struct to struct list
AllData.push_back(lineData);
}
Каждый раз, когда в цикле создается новый объект CollectedData, и его поля заполняются, затем копия его помещается в список AllData, и, наконец, объект автоматически уничтожается (запомните копия все еще существует в списке).
Подробно о том, когда уничтожаются объекты
C ++ имеет три вида хранилища: статическое, автоматическое и динамическое.
Объекты статического хранения существуют на протяжении всего времени существования программы. Любой объект, созданный вне класса или функции, является статическим (то есть глобальные переменные являются статическими). То же самое касается всего, что объявлено внутри класса или функции с ключевым словом static.
Объекты динамического хранения - это объекты, созданные с ключевым словом 'new' (или с помощью malloc (), но это C-ism, которого, как правило, следует избегать в C ++, если в этом нет особой необходимости). Объекты динамического хранения - это объекты, временем жизни которых управляет программист вручную. Динамически сохраняемый объект будет существовать до тех пор, пока вы не уничтожите его с ключевым словом «удалить». Обратите внимание, что only способ доступа к динамически хранимому объекту - через указатель или ссылку. Если вы не используете указатель или ссылку, он не является динамическим (но указатель / ссылка также может ссылаться на нединамический объект).
Объекты автоматического хранения - это ваши обычные переменные: переменные-члены структур и классов и локальные переменные (включая параметры) в методах и функциях.
Объекты автоматического хранения, определенные внутри функций, создаются при запуске строки кода, которая их определяет. Они автоматически уничтожаются, когда они «выходят за рамки», то есть когда блок, в котором они объявлены, завершается. В общем, «блок» - это набор фигурных скобок: {}. Таким образом, все, что создано внутри функции, уничтожается, когда функция возвращается, и аналогичным образом, все, что создается внутри тела цикла while, автоматически уничтожается, когда цикл достигает своего конца (независимо от того, завершается он или повторяется снова).
Объекты автоматического хранения, определенные как члены классов или структур, создаются при создании объекта, который содержит их в качестве членов, и уничтожаются, когда объект, содержащий их в качестве членов, уничтожается.
(я неоднократно использовал термин «объект» выше, но те же правила применяются к фундаментальным типам, таким как int, char, bool и т. Д.)