Member 13816159 Ответов: 2

Как мне продолжать добавлять две строки в векторы с помощью цикла while в C++


Здравствуйте, я пишу код, который позволяет пользователям добавлять название определенного фильма с его режиссером, а затем отображать то, что написал пользователь. Я использую векторы, но код, который я попробовал, отображает значения только после того, как я напишу имя и имя директора. Более того, после двух начальных входов строки не складываются вместе. Любая помощь по продолжению добавления значений в вектор, а затем отображения? Приведенный ниже код представляет собой конструктор Movie().

Что я уже пробовал:

Movie() {
		cout << "Enter the film name name: " << endl;
		getline(cin, filmname);
		cout << "Enter the director's name: " << endl;
		getline(cin, director);
		full = filmname + " " + director;
		cout << "The film and director is therefore: " << full << endl;
		while (cin >> full) {
			if (full == "end") {
				break;
			}
			Film.push_back(full);
		}
		cout << "You entered the following: ";
		for (int i = 0; i < Film.size(); i++) {
			cout << Music[i] << endl;
		}
	}

Patrice T

Покажите автономный фрагмент кода, чтобы мы могли воспроизвести проблему.

2 Ответов

Рейтинг:
2

User 7429338

С помощью cin >> full вы перезаписываете текущее значение full новым входом.
Вы должны сохранить новый ввод в отдельной строке и добавить к полной до тех пор, пока не будет набран "end".


KarstenK

Еще один вопрос, который показывает важность использования отладчика :-O

Рейтинг:
0

Richard MacCutchan

То while заявление должно быть в начале блока, прежде чем вы получите детали фильма, и цикл do, вероятно, будет работать лучше:

do
{
    cout << "Enter the film name name: " << endl;
    getline(cin, filmname);
    if (filmname == "end")
        break;
    cout << "Enter the director's name: " << endl;
    getline(cin, director);
    full = filmname + " " + director;
    cout << "The film and director is therefore: " << full << endl;
    Film.push_back(full);
} while (true);