感谢您的回答和评论。我选择了我选择的答案,因为它允许我继续使用,CEdit只需对代码进行一些小的更改。然而,所考虑的解决方案CMFCMaskedEdit在测试时似乎也有效。如果您选择使用该解决方案,请确保在初始化时为对象应用正确的功能,例如SetValidChars等!:) 再次谢谢大家
我正在使用 Visual Studio Professional 2017 C++ 和 MFC
CEdit我的 MFC 项目中有一个对象,该对象EDITTEXT在我的.rc文件中也有一个控件。
该CEdit对象将由输入关键字的用户进行编辑,我将使用该关键字执行某些操作,即查找包含该关键字的文件。
当然,由于我的任务,我不能允许以下chars: \ / : * ? " < > |,因为这些chars 不允许出现在文件或文件夹名称中。
我该怎么做才能阻止用户将这些字符输入到CEditBox. 实际上,char我只需要:A-Z、a-z、0-9和_。
另一种规格:不,regex请!理想情况下,答案将使用我可能忽略的Control(我看这里)或function(我看这里)。
如果没有解决方案,我会回到这个:
char我将检查用户输入的文本中是否存在这些内容。如果没有,那就太棒了,没什么可担心的!如果是,那么我将返回一个错误:)
先感谢您 !:D
在当前的两个答案中,我选择了使用基于范围的 for 循环的答案,因为它更好地满足了我的第一个要求,即避免冗长。可变参数模板的答案很有趣(我会尝试一下!),但比我想要的要长(因为我希望所有事情都在我提到的变量相同的函数内完成)。
如果其他人提出另一种方法,我仍然会关注(即使在遥远的将来!)并且总是很乐意选择可能更好的解决方案;)
我正在使用 Visual Studio 2017 Professional、C++、MFC
我有一个奇怪的问题,可能没有解决方案
我有一个遇到多个int变量的函数,假设我总共有六个变量:int1, int2, ..., int6。
我想将这些值中的每一个与 进行比较-1。如果其中任何一个== -1,则该void函数return提前退出。
我知道您可能想到的第一个想法是一个冗长的if声明,可能有几个分支,例如:
if ( (int1 == -1) || (int2 == -1) || ... || (int6 == -1) ) { return;}
或者
if (int1 == -1) { return;}
else if (int2 == -1) { return;}
...
else if (int6 == -1) { return;}
Run Code Online (Sandbox Code Playgroud)
另一个想法是将所有这些ints 推入 a …