有没有办法检查字符串的输入是否在00到99范围内?
我正在为钱创建一个类,因为浮动不建议我想把输入分成两个字符串。一个用于欧元,一个用于美分。在此之后,组合字符串并将它们流式传输到int Long。但问题是,如果用户使用的分数太少或太多,那么整个事情就会变成一场灾难
void Money::deposit() {
cout << "How much do you want to deposit? (Euros [ENTER], Cents [ENTER)" << endl;
string euros, cents;
cout << "Deposit: " << flush; cin >> euros; cout << "," << flush; cin >> cents;
}
答案 0 :(得分:3)
我建议您首先将金额作为字符串,然后分析字符串 - 查找小数点(如果有的话),判断您是否喜欢数字位数(=数字字符) )用户提供分数等。std::string
类有许多相关方法可用于此目的。
好处是你将避免潜在的解析失败并且不得不处理烦人的iostream语义。
但请注意,此解决方案非常简陋,无法在其他区域设置和/或其他货币中使用。或者更确切地说,您需要重写其他人编写的许多代码。如果您想“认真”地执行此操作,请查找现有库以使用货币值,可能是区域设置感知库。