2017-01-28 2 views
1
using namespace std; 
struct Movie { 
    string title; 
    string director; 
    string genre; 
    string yearRelease; 
    string duration; 
}; 
int main(){ 
    cout << "Hi"; 
    ifstream fin; 
    string line; 

    vector <Movie> m; 
    fin.open("Movie_entries.txt"); 
    while (getline(fin, line)) { 
     cout << line << endl; 
     stringstream lineStream(line); 
     getline(lineStream, m.title, ','); 
     getline(lineStream, m.director, ','); 
     getline(lineStream, m.genre, ','); 
     getline(lineStream, m.yearRelease, ','); 
     getline(lineStream, m.duration, ','); 
     m.push_back({title, director, genre, yearRelease, duration}); 
    } 
} 

Я пытаюсь отбросить структуру в вектор для хранения моих данных, и у меня возникают проблемы с тем, как именно это сделать. Это то, что я сейчас имею.Как отбросить структуру в вектор

+0

Вам необходимо создать объект фильма, такой как Movie firstMovie. Затем получите информацию о всех вещах в структуре в firstMovie, затем push_back (firstMovie). Помните, что ваш вектор может ВИДИТЬ В «типах фильмов», это не значит, что у вас уже есть объект Movie created .. –

+0

Off topic: Вы смотрите, чтобы быть в [отличной позиции для 'emplace_back'] (http: // en.cppreference.com/w/cpp/container/vector/emplace_back), который перескакивает из-за необходимости временного, делая почти то же, что вы пробовали с помощью 'push_back'. – user4581301

+0

@OmidCompSCI 'push_back' должен работать как есть, см. [Здесь] (http://coliru.stacked-crooked.com/a/af8b615bb8c52a80), так как' Movie' является [агрегатом] (http: // stackoverflow .com/q/4178175/3093378), а фигурные скобки могут использоваться для его инициализации. В принципе, компилятору разрешено преобразовывать '{...}' в 'Movie {...}'. – vsoftco

ответ

2

Вам просто нужно создать структурную переменную; установить для него атрибут; затем нажмите эту структуру на вектор.

В C++ объявить структурную переменную с Movie aMovie; достаточно. Нет необходимости в struct Movie aMovie;.

using namespace std; 
    struct Movie { 
     string title; 
     string director; 
     string genre; 
     string yearRelease; 
     string duration; 
    }; 
int main(){ 
    cout << "Hi"; 
    ifstream fin; 
    string line; 

    vector <Movie> m; 
    fin.open("Movie_entries.txt"); 
    while (getline(fin, line)) { 
     cout << line << endl; 
     stringstream lineStream(line); 
     struct Movie aMovie; 
     getline(lineStream, aMovie.title, ','); 
     getline(lineStream, aMovie.director, ','); 
     getline(lineStream, aMovie.genre, ','); 
     getline(lineStream, aMovie.yearRelease, ','); 
     getline(lineStream, aMovie.duration, ','); 
     m.push_back(aMovie); 
    } 
} 
+0

Почему 'struct Movie aMovie;'? Это не C – Xeverous

+0

Справа. Я добавляю примечание. – cuongptnk

+0

Могу я предложить вам вместо этого изменить код. :) –

Смежные вопросы