在此输入验证 while 循环中,在调用我的控制台输出后显示 cerr。它显示为“输入费率:$无效费率”。
例如:
Enter rate: $750
Enter rate: $Invalid Rate.
它与 do-while 循环的作用相同。有什么建议或帮助吗?
#include <iostream>
using namespace std;
#define max_rate 50
#define max_hours 80
int main() {
// input validation loop (loops until input is valid)
double rate, hours;
cout << "enter rate: $";
cin >> rate;
cin.ignore();
while (rate > max_rate){
if (rate > max_rate){
cerr << "Invalid Rate." << endl;
}
cout << "enter rate: $";
cin >> rate;
}
do {
if (hours > max_hours) {
cerr << "Invalid hours." << endl;
}
cout << "enter hours: ";
cin >> hours;
}
while (hours > max_hours);
double pay = rate * hours;
cout << "$" << pay << endl;
return 0;
答案是,第一阅读,第二检查,第三声明。那是,
for (;;) { // the same as while(true)
cin >> rate;
if (rate is valid)
break;
cout << "Invalid rate\n";
}
并且不要混合cout
and cerr
没有理由。cout
延迟输出,在内部缓冲区中累积数据,同时cerr
立即打印。 (但cout
刷新缓冲区cin
使用;也可以打电话cout.flush
[or cout << flush
] 明确)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)