我正在进行货币兑换计划,我会对输入金额进行准确的更改,例如23的值是20美元和3美元的钞票
我想限制用户输入值,直到小数点后2位。例如:有效输入是 20,20.4,23.44但无效输入为20.523或20.000。
我该怎么做才是C / C ++。
我读到了一个setprecision
的函数,但这不是我想要的,setprecision
允许显示直到该小数点的值,它仍然不会阻止用户输入任何值
有没有办法做到这一点?
答案 0 :(得分:2)
以字符或整行的形式读取用户的数量,然后检查其格式,然后将其转换。
答案 1 :(得分:1)
通常更容易让用户键入他们想要的任何内容,然后程序拒绝输入,如果它无效,而不是限制他们可以键入的键入内容。
对于击键分析,您需要一个具有4种状态的状态机,我们可以将其命名为Number,Numberdot,Numberdotone和Numberdottwo。您的代码必须为所有击键进行正确的转换,包括将光标移动到某个任意位置的箭头键和Backspace键。这是很多工作。
使用输入验证,您所要做的就是使用正则表达式检查输入,例如^(([0-9] +)|([0-9] +。[0-9])|([0-9] +。[0-9] [0-9])$。这假定“20.”无效。如果它无效,则告诉用户并让他们再次进行。
答案 2 :(得分:0)
我不相信有任何方法可以设置库为您执行此操作。因此,你将不得不自己做这项工作。
有很多方法可以做到这一点,但处理限制输入的唯一真正方法是控制自己阅读。
在这种情况下,您将循环键盘输入,对于任何击键,您必须决定是否可以在过去输入的上下文中接受,然后显示它。也就是说,如果有小数点,您只接受更多数字。这也允许您将输入限制为数字和小数位,更不用说输入长度了。
缺点是您必须处理所有编辑命令。即使是裸骨,你也需要支持删除和输入。
答案 3 :(得分:0)
对于您正在使用的GUI而言,这是核心C / C ++的任务。根据您的GUI / Web Toolkit,您可以提供或多或少的详细规则,以便可以输入或不输入数据。
如果您正在编写普通的GUI应用程序,则可以控制和修改输入的密钥(使用C或C ++)。 在WEB应用程序中,您可以使用javascript执行类似的操作。 最好的解决方案是所有非法输入都是不可能的。