int main()
{
for (int i = 0; i < 4; ++i)
{
cout << "Please enter Employee #" << (i+1) << "'s" << " name: ";
cin.ignore();
getline(cin, employee[i].employeeName);
cout << "Please enter Employee #" << (i+1) << "'s hours worked: ";
cin >> employee[i].hoursWorked;
cout << "Please enter Employee #" << (i+1) << "'s hourly rate: ";
cin >> employee[i].hourlyRate;
cout << "Please enter Employee #" << (i+1) << "'s Federal Tax Rate: ";
cin >> employee[i].fedtaxRate;
cout << "Please enter Employee #" << (i+1) << "'s State Tax Rate: ";
cin >> employee[i].statetaxRate;
cout << endl;
}
Как говорит название, я в настоящее время cin.ignore();
, чтобы помочь с принятием в полном имени, как «Баркли, Чарльз» (это делает прекрасную работу, за исключением того, что отсекает первый символ, оставив нас с «Arkley, Чарльз "при печати), но когда я удаляю cin.ignore();
, как и 99% ответов на вопросы StackOverflow, которые ответили, ничего не происходит. На самом деле, это даже ухудшается: во втором цикле он займет вторую строку второго цикла и помещает его в первую строку второго цикла. Это просто беспорядок. О, и cin.getline
тоже не работает. Я пробовал это в сочетании с cin.sync
и без кубиков. Обычный простой старый ваниль cin >>
вызывает одну и ту же вторую строку в первой строке. Я не знаю, что делать. Я не нашел статью SO, которая охватывает этот (по-видимому) крайний случай. Спасибо за помощь.getline удаляет первый символ; удаление cin.ignore(); не решает
Предполагая, что вызов 'ignore' должен читать и отбрасывать новую строку после последнего ввода, как насчет того, чтобы поместить его в * конец * цикла? –
Блестящий. Спасибо, чувак. – ZoeVillanova
'getline' делает ** не ** удаляет первый символ. Что-то ** до ** этот звонок удалил. И единственное, что до этого вызова, касающееся 'std :: cin', - это вызов' ignore() '. –