捕获 cin 异常
Catch cin exception
我想请求用户输入,我用 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,所以如果用户输入一个字符串而不是数字,它应该再次询问他以获得更好的输入。但问题是,当输入例如 "AA" 时,程序会执行两次 AskForGroundstate,然后执行三次 "AAA" 等等。我是不是用错了?
问题是cin.ignore()
丢了一个字符;您想将所有字符放到行尾:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
这可确保在提示最终用户再次输入之前丢弃所有无效输入。
我想请求用户输入,我用 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,所以如果用户输入一个字符串而不是数字,它应该再次询问他以获得更好的输入。但问题是,当输入例如 "AA" 时,程序会执行两次 AskForGroundstate,然后执行三次 "AAA" 等等。我是不是用错了?
问题是cin.ignore()
丢了一个字符;您想将所有字符放到行尾:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
这可确保在提示最终用户再次输入之前丢弃所有无效输入。