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) Посмотреть статистику Booking Packages
8) Выход
Ваш выбор: 6
Изменить информацию о сотрудниках
Новый пользователь Имя пользователя: John Smith
<- странное пространство здесь, что мне нужно нажать enter, чтобы избавиться от
Введите новое имя:
Проблема заключается в cin.ignore()
, он будет читать до тех пор, пока не будет прочитано 100 символов, или один из этих символов будет символом новой строки. Поэтому, чтобы удовлетворить его, вы должны ввести, например, новую строку.
ignore
а затем getline
вы делаете две операции ввода. Оба закончились переводом строки.