输入名称后跳过变量

时间:2015-03-16 00:12:23

标签: c++ input

我尝试运行时遇到错误。它允许我输入员工的姓名,然后一旦我按 Enter ,它会跳到最后,按小时飞行并支付费率而不让我输入。

#include <iostream>
#include <iomanip>
using namespace std;

int main()  
    {
        string EmployeeName;    //Employee Name
        float EmployeeHours;
        float EmployeePayRate; //Emplyee Hours, Employee PayRate

        cout << setw(50) << "Employee Name: ";
        cin >> EmployeeName;

        cout << setw(50) << "EmployeeHours: ";
        cin >> EmployeeHours;

        cout << setw(50) << "EmployeePayRate: ";
        cin >> EmployeePayRate;

        system("PAUSE");
        return 0;
    }

2 个答案:

答案 0 :(得分:3)

我认为@AleksandarStojadinovic的评论提供了你的问题的线索。使用

std::getline(std::cin, EmployeeName);

读取名称。休息可以照原样。

答案 1 :(得分:0)

  

我尝试运行时遇到错误。它让我输入   员工姓名,然后一旦按下输入,它就会跳到最后。   按小时和付费率飞行而不让我输入。

你的名字必须由两个/三个名字组成,可能是第一个中间名,也可以是最后一个名字。 cin以相同的方式处理空格分隔的字符串和enter分隔的字符串,即将每个空格分隔为string作为不同的输入。如果你的名字有两个名字,那么第一个名称正确,但第二个名称转到一个声明为float的变量,程序异常终止。这就是为什么在这种情况下使用cin是不正确的。

您需要使用其他方法来避免这种情况,例如使用getline(cin,EmployeeName)