Как мне избежать пропуска функции getline() в этой функции?
Поэтому я пытаюсь создать сортировочную программу, которая сможет сортировать песни на основе различной информации, которую она дает. Это просто практика для занятий, довольно простые вещи. Я просто немного запутался в том, почему в цикле for в основной функции getline() в моем вызове readAlbum() пропускается при выполнении второго цикла. Couts в цикле просто существуют для меня, чтобы убедиться, что значения берутся и хранятся там, где я хочу.
#include <iostream> #include <string> using namespace std; class Song { public: Song(); void readArtist(); void readAlbum(); void readName(); void readLength(); void readYear(); void setArtist(string Artist); void setAlbum(string Album); void setName(string Name); void setLength(string Length1, string Length2); void setYear(int Year); string getArtist(); string getAlbum(); string getName(); string getLength(); int getYear(); ~Song(); private: string artist, album, name, length; float year; }; Song::Song() { length = ":"; year = 0; artist = ""; name = ""; album = ""; } void Song::readArtist() { string Artist; cout << "Enter artist name: "; getline(cin, Artist); setArtist(Artist); } void Song::setArtist(string Artist) { artist = Artist; } void Song::readAlbum() { string Album; cout << "Enter album name: "; getline(cin, Album); setAlbum(Album); } void Song::setAlbum(string Album) { album = Album; } void Song::readName() { string Name; cout << "Enter song name: "; getline(cin, Name); setName(Name); } void Song::setName(string Name) { name = Name; } void Song::readLength() { string LengthMin, LengthSec; cout << "Enter song length (minutes then seconds, separated by a space): "; cin >> LengthMin >> LengthSec; setLength(LengthMin, LengthSec); } void Song::setLength(string Length1, string Length2) { length.insert(0, Length1); length.append(Length2); } void Song::readYear() { int Year; cout << "Enter the year the song was released: "; cin >> Year; setYear(Year); } void Song::setYear(int Year) { year = Year; } string Song::getArtist() { return artist; } string Song::getAlbum() { return album; } string Song::getName() { return name; } string Song::getLength() { return length; } int Song::getYear() { return year; } Song::~Song() { } int main() { Song songs[20]; bool done = false; for (int i = 0; (i < 20) || (!done); i++) { cout << "-Song " << i + 1 << "-" << endl; songs[i].readAlbum(); cout << "Album: " << songs[i].getAlbum() << endl; songs[i].readArtist(); cout << "Artist: " << songs[i].getArtist() << endl; songs[i].readName(); cout << "Name: " << songs[i].getName() << endl; songs[i].readLength(); cout << "Length: " << songs[i].getLength() << endl; songs[i].readYear(); cout << "Year: " << songs[i].getYear() << endl; } return 0; }
Что я уже пробовал:
не совсем уверен, что попробовать, братан