为什么usernametwo总是被跳过?

时间:2014-04-14 07:54:44

标签: c++ io cin getline

我正在努力学习C ++,无论如何我都在学习语句。

我编写了一个程序,向两个用户询问他们的全名和年龄(虚构用户),它询问user1其名称和年龄以及user2相同,但不知何故要求user2的名称被跳过并最终询问user2的年龄< / p> 为什么?

这是我的代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string usernameone;
    string usernametwo;
    int age1;
    int age2;

    //ask the users their name and age
    cout << "Hi may I know your full name ? : ";
    getline ( cin, usernameone, '\n');
    cout << "\nHello " << usernameone << " May I know now whats your age ? : ";
    cin >> age1;
    cout << "Ok thanks for the information, now may I talk to the other user ? thanks.\n\n";
    cout << "Hello may I know your full name ? : ";
    getline ( cin, usernametwo, '\n');
    cout << "\nHello " << usernametwo << " May I know now whats your age ? : ";
    cin >> age1;

    if(age1 < age2)
    {
        cout << "looks like " << usernameone << " is older than " << usernametwo;
    }
    else
    {
        cout << "ok " << usernametwo << " is older than " << usernameone;
    }

    if(age2 && age1 >= 100)
    {
        cout << "your both lying your age can't be 100 and above";
    }

    cin.ignore();
    cin.get();
    return 0;
}

1 个答案:

答案 0 :(得分:4)

cin >> age1;
cout << "Ok thanks for the information, now may 
         I talk to the other user ? thanks.\n\n";
cout << "Hello may I know your full name ? : ";

在输入流中留下'\n',您将在下一次阅读

中阅读它
getline ( cin, usernametwo, '\n');

您可以使用以下内容忽略此字符:

    cin >> age1;
    cout << "Ok thanks for the information, now may 
             I talk to the other user ? thanks.\n\n";
    cout << "Hello may I know your full name ? : ";
    cin.ignore();
    getline ( cin, usernametwo, '\n');