【发布时间】:2012-11-25 23:52:14
【问题描述】:
由于某些原因,当我到达某个位置时,我必须按两次 Enter 才能提交。我添加了 clear 以防止它跳过输入,并添加了 ignore() 以防止它在缓冲区中保留任何额外的字符。我输入我的输入,然后它下降到一个新行,我再次点击 Enter 并输入输入并继续程序没问题,但我想知道为什么。这是一个代码sn-p:
cin.ignore();
cout << "Enter Student Major (ex. COSC): ";
cin.getline(student.major, 6);
for(int i = 0; i < sizeof(student.major); i++)
student.major[i] = toupper(student.major[i]);
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
有什么建议吗?
【问题讨论】:
-
你试过摆脱
cin.clear()和cin.ignore(numeric_limits<streamsize>::max(),'\n')吗? -
如果我摆脱了两者并且用户超过了字符限制,那么我的程序就会崩溃。
-
你要么自动输入回车,要么必须输入两次回车,绝对令人抓狂!