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();
,像已經回答StackOverflow的問題,99%的人說,沒有任何反應。事實上,它甚至會變得更糟:在第二循環中,將採取第二循環的第二行,並把它放在第二循環的第一道防線。這只是一團糟。哦,cin.getline
也不起作用。我想,在cin.sync
並沒有骰子一起。普通老式香草cin >>
導致在第一線的問題同第二行。我不知道該怎麼辦。我還沒有找到涵蓋這個(貌似)邊緣案例的SO文章。謝謝您的幫助。getline刪除第一個字符;去除cin.ignore();不能解決
假設'ignore'調用是在最後一次輸入之後讀取並放棄換行符,那麼將它放在循環的* end *處怎麼樣? –
輝煌。謝謝老兄。 – ZoeVillanova
getline不**刪除第一個字符。 **之前**的那個電話刪除了它。觸及'std :: cin'之前的唯一一個調用是對'ignore()'的調用。 –