[英]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.