使用cin获取带有空格的多个输入

时间:2017-04-21 07:36:51

标签: c++ cin

我有一个简单的结构,用于存储需要通过用户输入初始化其值的人员的详细信息。结构如下:

typedef struct {

        char name[20];
        int age;
        char address[50];
        char vehicle[10];
}Runner;

我使用cin存储每个Runner的值,但希望在输入每个值后使用enter key获取输入(可能包含其间的空格)。

以下是代码:

Runner run1;

        cout << "Enter name age address vehicle (pressing enter at each instance)" << endl;
        cin >> run1.name >> run1.age >> run1.address >> run1.vehicle ;

很明显,空格分隔值将被视为两个唯一条目。

如何在按下输入后跳过空格和cin。此外,如果对这种情况有另一种方法,那么了解相同情况会很棒。

2 个答案:

答案 0 :(得分:1)

cin.getline (name,20);
cin.getline (address,50);
cin.getline (vehicle,10);
cin >> age;

答案 1 :(得分:1)

由于输入可能在它们之间有空格,因此您应该使用getline函数。

cin.getline(run1.name,20);
cin.getline(run1.address,50);
cin.getline(run1.vehicle,10);
cin >> age

但是如果你想在取名字的价值后取年龄的价值,那你就必须做这样的事情。

cin.getline(run1.name,20);
cin >> run1.age;
cin.getline(dummy,5);    //cin leaves a newline at the buffer. This line of code takes the newline from the buffer.
cin.getline(run1.address,50);
cin.getline(run1.vehicle,10);