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

Taking multiple inputs with whitespaces using cin

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

typedef struct {

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

我正在使用 cin 来存储每个 Runner 的值,但希望在之后使用 enter key 获取输入(中间可能包含白色 space)输入的每个值。

下面是代码:

Runner run1;

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

很明显 space 分隔的值将被视为两个唯一条目。

如何仅在按下回车后跳过白色-spaces 和cin。另外,如果有另一种方法来处理这种情况,那么知道同样的方法会很棒。

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

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

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

但是如果你想在取name的值之后取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);