使用 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);
我有一个简单的结构,它存储一个人的详细信息,其值需要通过用户输入进行初始化。结构如下:
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);