gpt4 book ai didi

c++ - 在 SFML 的 TGUI 库中验证输入

转载 作者:行者123 更新时间:2023-11-30 03:32:39 29 4
gpt4 key购买 nike

我有一个窗口,其中有几个文本框,人们可以在其中输入他们的 名字、年龄、性别、工作和任何当前疾病,这些信息将保存到一个文本文件中。

我正在使用 SFML 制作窗口、处理背景和其他菜单内容以及用于文本框的 TGUI 库。

按照TGUI网站上的教程,我能够从框中获取文本并将其转换为字符串并使用,例如:

myfile << Job->getText().toAnsiString() << std::endl;

但是,我需要验证输入,这样 name 只是一个单词,没有特殊字符或数字,Age 只是一个 +ve int,没有空格或特殊字符等...

我该怎么做呢?在我的新手心目中,例如对于“年龄”,我能想到的就是有一个特殊字符和 [A-Z] 和 [a-z] 的数组,并使用 for 循环检查我的字符串中的每个元素到每个元素阵列。但这似乎效率很低。

最佳答案

有两种方法可以做到这一点。要限制编辑框中可接受的字符,您可以简单地使用 setInputValidator function它指定了可接受的输入。如果您只希望用户键入一个数字,则只需调用以下函数:

editBox->setInputValidator(tgui::EditBox::Validator::UInt);

setInputValidator 函数可以将正则表达式字符串作为参数,因此验证器可以像您想要的那样复杂。

第二种方法是之后手动进行验证(通过遍历所有字符,如 Henri Prudhomme's answer )。这样您就可以允许用户在编辑框中键入不正确的内容,然后例如更改编辑框的颜色以指示该值无效。

第二种方法在更复杂的情况下更好。假设您想将输入限制在 10 到 20 之间。您可以使用 setInputValidator 中的正则表达式来做到这一点,但是当用户开始输入 1 时要在其后键入另一个数字,输入将被拒绝,并且不会在编辑框中添加任何内容。在这种情况下,最好的方法可能是两种方法的结合,让 setInputValidator 过滤掉所有非数字输入,然后手动验证数字是否在想要的范围内。

关于c++ - 在 SFML 的 TGUI 库中验证输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43382244/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com