[英]C++ ignore and clear buffer
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 >>选择的整数输入; 进入开关。 即使其他功能完全相同,我也没有任何错误。 从字面上确切。
例如 以下没有错误
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
<-我需要按Enter摆脱的奇怪空间
输入新名称:
问题是cin.ignore()
调用,它将读取直到读取100个字符或这些字符之一是换行符为止。 因此,要满足此要求,您必须输入例如换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.