我想问用户输入,我用cin这样得到了
void AskForGroundstate() {
cout << "Please enter an groundstate potential value in Volt:" << endl;
if (!(cin >> _VGroundstate)) {
cin.clear();
cin.ignore();
cout << "Groundstate potential not valid." << endl;
AskForGroundstate();
}
}
_VGroundstate是一个double,所以如果用户输入的字符串不是数字,它应该再次询问他是否有更好的输入。但问题是,当输入例如&#34; AA&#34;时,程序执行AskForGroundstate两次,使用&#34; AAA&#34;三次等我使用了明确的错误吗?
答案 0 :(得分:4)
问题是cin.ignore()
丢弃了一个字符;你想把所有的字符都放到行尾:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
这可确保在再次提示输入最终用户之前删除所有无效输入。