Cin in function

时间:2018-04-09 23:32:06

标签: c++

我创建了一个简单的结构和函数来输入它的所有数据。问题是,如果在函数内部使用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

0 个答案:

没有答案