C 忽略和清除缓冲区
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
的相互作用欢迎来到员工登录屏幕
请输入用户名:丹尼尔·罗伯茨
请输入密码:Daniel1234
登录成功
总经理菜单
1)创建假日软件包
2)删除节日套餐
3)编辑假日软件包
4)创建一个员工帐户
5)删除员工帐户
6)编辑员工帐户
7)查看预订套件的数据
8)退出
您的选择:6
编辑员工信息
新员工用户名:约翰·史密斯
&lt; - 我需要按Enter的奇怪空间以摆脱
输入新名称:
问题是cin.ignore()
调用,它将读取,直到它具有读取100个字符或其中一个字符为newline为止。因此,要满足它,您必须输入,例如newline。
相关文章:
- 清除输入缓冲区后未提取字符串流
- libQGLViewer 如何在没有清除缓冲区的情况下绘制
- C++使用libarchive和archive_write_open_memory..如何清除缓冲区
- 安全操作以清除C++中的空输入缓冲区
- 清除缓冲区独立于操作系统
- 忽略替代,清除缓冲区中的所有内容
- 在Android/OSL中,我可以在bufferQueue中释放单个缓冲区并将其排队,而不是清除整个缓冲区吗
- C 忽略和清除缓冲区
- 如何在C 中清除Isringstream对象的缓冲区
- 如何在C 中清除输入缓冲区
- cin.clear() 如何清除输入缓冲区
- 如何刷新或清除 GetAsyncKeyState 的缓冲区
- C++清除输入缓冲区(最后没有换行符)
- 清除 cout 缓冲区 (c++)
- 为什么我的编译器在尝试清除 CIN 缓冲区时抱怨
- 为什么我们必须在渲染过程中清除 OpenGL 中的深度缓冲区
- 如何在使用之前清除内部服务器套接字缓冲区的内容
- 清除输入缓冲区中的所有其他字符
- 使用cin对象进行输入验证并清除缓冲区(c++)
- 如果找不到任何内容,Serial.find 是否会清除缓冲区