getline没有全线

时间:2014-03-10 20:24:31

标签: c++ string getline

这是我的程序的功能。 当你使用getline(cin,something)它应该得到整行不是吗?

void readMovieData(MovieData *pMovie, int const size)
{
string title;
string director;
int year;
int time;

for(int i = 0; i < size; i++)
{
    cout << "\nPlease enter the Title of the movie: ";
    getline(cin, title);
    pMovie[i].setTitle(title);

    cin.ignore();

    cout << "Please enter the Director name of the movie: ";
    getline(cin, director);
    pMovie[i].setDirector(director);

    cin.ignore();

    cout << "Please enter the year it was released: ";
    cin >> year;
    if(year >= 1900 && year <= 2004)
        pMovie[i].setYear(year);
    else
    {
        cout << "Please enter a year between 1900 and 2004." << endl;
        year = 0;
        system("PAUSE");
        break;
    }

    cout << "Please enter the time the movie last: ";
    cin >> time;
    if(time > 0 && time < 14400)
        pMovie[i].setTime(time);
    else
    {
        time = 0;
        cout << "Please enter a time between 0 and 14400 in minutes." << endl;
        system("PAUSE");
        break;
    }
} 
}

当我运行程序并输入两个或更多单词时,似乎无效。我的int接受除第一个之外的单词的输入。我不明白这是什么问题。

这是我的输出

上个月你看了多少部电影? 2

请输入您的电影信息!

请输入电影的标题:bobby lee

请输入影片的导演名称:非常可怕

请输入发布年份:请输入1900年至2004年之间的年份。

按任意键继续。 。

以下是您的电影的信息!

你所有电影的平均时间是:0

你看过的最古老的电影叫做......

名称:

导演:obby lee

发行年份:0

您观看过的最新电影名为......

名称:

导演:obby lee

发行年份:0

进程返回0(0x0)执行时间:11.962秒 按任意键继续。

我希望程序能够无错误地获得标题的全名(1个或多个单词)和导演的全名(1个或多个单词)。

0 个答案:

没有答案