C ++如何在包含两个变量的结构中为变量存储不同数量的值?

问题描述 投票:0回答:1

到目前为止是我的代码。 C ++ My code.这是学校要求提出的问题:编写一个程序,该程序使用名为MovieData的结构来存储有关电影的以下信息:•标题

•导演

•发布年份

•运行时间(以分钟为单位)

程序应创建两个MovieData变量,将值存储在其成员中,并传递每个变量,依次是一个以清晰格式显示有关电影信息的功能。

我的问题是,当用户输入第二部电影的信息时,getline(cin,b.title)被跳过,仅移至导演。我正在寻找这种情况的原因以及解决方法。Required output vs. My output.

    #include <iostream>
    #include <string>
    #include <sstream>
    using namespace std;

    struct MovieData {
        string title;
        string director;
        int year;
        int runningTime;
    };

    void displayMovie(MovieData movie);

    int main()
    {
        MovieData a, b;

        cout << "First Movie" << endl;
        cout << "Enter title: ";
        getline (cin, a.title);
        cout << "Enter Director: ";
        getline (cin,a.director);
        cout << "Enter year: ";
        cin >> a.year;
        cout << "Enter Runing Time: ";
        cin >> a.runningTime;


        cout << "\nSecond Movie" << endl;
        cout << "Enter title: ";
        getline (cin, b.title);
        cout << "Enter Director: ";
        getline (cin, b.director);
        cout << "Enter year: ";
        cin >> b.year;
        cout << "Enter Runing Time: ";
        cin >> b.runningTime;

        displayMovie(a);

        displayMovie(b);

    }

    void displayMovie(MovieData movie)
    {

        cout << "-----------------------";
        cout << "\nTitle: " << movie.title << endl;
        cout << "Director: "<< movie.director << endl;
        cout << "Year: " << movie.year << endl;
        cout << "Runing Time: " << movie.runningTime << " minutes"                 
     << endl;


    }
c++ function variables structure
1个回答
0
投票

[一个人输入跑步时间后,他们将按Enter键或之后返回。由于您没有要读取的输入或返回代码,因此下一次调用getline以读取下一部电影的标题将得到它。

我的建议是不要使用这样的代码:

    cin >> b.year;

您真正想做的事是在line中阅读的,但是您使用代码来阅读数字。常见的解决方法是,每次读入不是行而是要读取行的内容后,都使用cin.ignore()。我个人觉得这很尴尬,但这很常见。

© www.soinside.com 2019 - 2024. All rights reserved.