如何使用 C++ 检查非数字输入?我正在使用 cin 读取浮点值,并且我想检查是否通过标准输入输入了非数字输入。我曾尝试使用 %d 指示符来使用 scanf,但我的输出已损坏。使用 cin 时,我得到了正确的格式,但是当我输入诸如“dsffsw”之类的字符串时,我得到了一个无限循环。注释代码是我尝试捕获浮点数,并将其类型转换为字符串,并检查它是否是有效的浮点数,但检查总是错误的。
我尝试使用在留言板上找到的其他方法,但他们想在 C 中使用 scanf 而不是在 C++ 中使用 cin。你如何在 C++ 中做到这一点?或者如果它不可行,则在 C 中。
while (!flag) {
cout << "Enter amount:" << endl;
cin >> amount;
cout << "BEGIN The amount you entered is: " << strtod(&end,&pend) << endl;
//if (!strtod(((const char *)&amount), NULL)) {
// cout << "This is not a float!" << endl;
// cout << "i = " << strtod(((const char *)&amount), NULL) << endl;
// //amount = 0.0;
//}
change = (int) ceil(amount * 100);
cout << "change = " << change << endl;
cout << "100s= " << change/100 << endl;
change %= 100;
cout << "25s= " << change/25 << endl;
change %= 25;
cout << "10s= " << change/10 << endl;
change %= 10;
cout << "5s= " << change/5 << endl;
change %= 5;
cout << "1s= " << change << endl;
cout << "END The amount you entered is: " << amount << endl;
}
return 0;
}