我创建了一个简单的结构和函数来输入它的所有数据。问题是,如果在函数内部使用cin
进行输入,则会在流中抛出换行符。
奇怪的是,如果我将输入ID放在开头,cin
会将'\n'
抛出到流中,但是如果我先输入名称,那么只有工资和iD,然后新行和cin
没有问题。
#include <iostream>
using namespace std;
struct Worker {
string name;
int salary;
int id;
};
Worker newWorker;
int setWorker () {
cout << "\nNAME: ";
if (!(getline(cin, newWorker.name)) || newWorker.name.size() < 1)
return 1;
cout << "\nID: ";
if (!(cin >> newWorker.id) || newWorker.id < 1)
return 1;
cout << "\nSALARY: ";
if (!(cin >> newWorker.salary) || newWorker.salary < 1)
return 1;
return 0;
}
int main()
{
setWorker();
return 0;
}
如果NAME首先输出
姓名:DEN
ID:1
SALARY:1
进程返回0(0x0)执行时间:3.764 s按任意键进入 继续。
首先输入ID
int setWorker () {
cout << "\nID: ";
if (!(cin >> newWorker.id) || newWorker.id < 1)
return 1;
cout << "\nNAME: ";
if (!(getline(cin, newWorker.name)) || newWorker.name.size() < 1)
return 1;
cout << "\nSALARY: ";
if (!(cin >> newWorker.salary) || newWorker.salary < 1)
return 1;
return 0;
}
ID:5
姓名:
进程返回0(0x0)执行时间:2.067 s