我尝试运行时遇到错误。它允许我输入员工的姓名,然后一旦我按 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;
}
答案 0 :(得分:3)
我认为@AleksandarStojadinovic的评论提供了你的问题的线索。使用
std::getline(std::cin, EmployeeName);
读取名称。休息可以照原样。
答案 1 :(得分:0)
我尝试运行时遇到错误。它让我输入 员工姓名,然后一旦按下输入,它就会跳到最后。 按小时和付费率飞行而不让我输入。
你的名字必须由两个/三个名字组成,可能是第一个中间名,也可以是最后一个名字。 cin
以相同的方式处理空格分隔的字符串和enter
分隔的字符串,即将每个空格分隔为string
作为不同的输入。如果你的名字有两个名字,那么第一个名称正确,但第二个名称转到一个声明为float
的变量,程序异常终止。这就是为什么在这种情况下使用cin是不正确的。
您需要使用其他方法来避免这种情况,例如使用getline(cin,EmployeeName)
。