0

重複の可能性:
C++ で cin.getline() が入力をスキップしている

次のような 2 つの映画のデータを取得するために、C++ に取り組んでいます。

    struct Movie m1, m2;
    cout << "Enter first movie title: ";
    cin.getline(m1.title, 30); 
    cout << "Enter first movie director: ";
    cin.getline(m1.director, 30); 
    cout << "Enter first movie length: ";
    cin >> m1.length; 

    cout << "Enter second movie title: ";
    cin.getline(m2.title, 30);
    cout << "Enter second movie director: ";
    cin.getline(m2.director, 30); 
    cout << "Enter second movie length: ";
    cin >> m2.length;

しかし、出力で 2 番目の映画のタイトルを入力するだけではないことに驚きました。ここに出力があります

Enter first movie title: Girl

Enter first movie director: GirlD

Enter first movie length: 10

Enter second movie title: Enter second movie director: Boy

Enter second movie length: 20
4

1 に答える 1

0

cin >> m1.length;その数字のみを読み取るため、 を残します\n。次の getline は空の行を読み取るため、次のように読み取ることができます。

string temp;
cin.getline(temp, 30);
stringstream sst(temp);
sst >> m1.lenght;
于 2013-02-01T19:50:42.180 に答える