int position;
afile.open("EmployeeInfo.dat", ios::in | ios::binary);
char name[80];
cout << "\nEdit Employee Info" << endl;
cout << "---------------------" << endl;
cout << "New Employee Username: ";
cin.clear();
cin.ignore(100, '\n');
cin.getline(name, 80);
bool flag = true;
大家都知道我正在做的程序的代码片段。大多数功能都很好,除了我需要按Enter两次以接收getline数据。任何人都可以指出我在哪里做错了吗?
之前的最后一个输入是使用cin&gt;&gt;的整数输入。选择;进入开关。 我没有其他功能的任何错误,即使他们正在做同样的事情。字面上确切。
例如。以下
没有错误afile.open("EmployeeInfo.dat", ios::in | ios::binary);
char name[80];
cout << "\nAdd Employee Info" << endl;
cout << "---------------------" << endl;
cout << "New Employee Username: ";
cin.clear();
cin.ignore(100, '\n');
cin.getline(name, 80);
好的,这是周围的代码。
该函数在另一个函数中调用
cout << "Your Choice: ";
cin >> choice;
switch(choice)
{
case 1: cout << "Create Holiday Package" << endl;
break;
case 2: cout << "Delete Holiday Package" << endl;
break;
case 3: cout << "Edit Holiday Package" << endl;
break;
case 4: addEmployee(afile, num, e);
break;
case 5: delEmployee(afile, num, e);
break;
case 6: editEmployee(afile, num, e);
break; ....// to be continue case
}//end case
这是我与cmd的交互
请输入用户名:Daniel Roberts
请输入密码:Daniel1234
登录成功
总经理菜单
1)创建假日套餐
2)删除假期套餐
3)编辑假期套餐
4)创建一个员工帐户
5)删除员工帐户
6)编辑员工帐户
7)查看预订套餐的统计信息
8)退出
您的选择:6
编辑员工信息
新员工用户名:John Smith
&lt; - 奇怪的空间,我需要按Enter键摆脱
输入新名称:
答案 0 :(得分:1)
问题是cin.ignore()
调用,它将读取,直到它读取100个字符或其中一个字符是换行符。所以为了满足它,你必须输入例如换行。