簡體   English   中英

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的交互

歡迎來到員工登錄屏幕

請輸入用戶名: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM