创建自己的输入蒙版
Creating own input masks
基本上我想验证一个字符串对掩码,这是在数据库中,但是验证它我需要分配一个规则掩码即[D] = 0<=10
。所以我所做的就是检索那个蒙版并从字母中提取[]并将它们存储在两个不同的向量中,所以我的问题是,你能否用向量
。e
a[0] = 0<=10
a[1] = "H"
下面是我的代码,请记住,顶部的字符串不是来自DB,它只是我创建的字符串,假设它来自DB,因为过程将是相同的
string s("[sh][a][mar][i]");
vector< vector<char> > Vect;
vector<char> vect;
int i = 0;
while(i < s.size()) {
if(s[i]=='[') {
i++;
vect.push_back(s[i]);
i++;
}
else if(s[i] == ']') {
i++;
Vect.push_back(vect);
vect.clear();
}
else {
vect.push_back(s[i]);
i++;
}
}
vector< vector<char> >::iterator it;
vector<char>::iterator itera;
vector<std::string> vectString;
for (it = Vect.begin() ; it != Vect.end() ; ++it ) {
string a;
for (itera = it->begin() ; itera != it->end() ; ++itera) {
cout << *itera;
a += *itera;
}
vectString.push_back(a);
}
我不太明白你的问题,但我可以提出以下建议:
-
不要使用巨大的if-else-if语句,尝试使用std::string::find和std::string::substr来提取元素
-
我真的不明白你为什么要把std::string转换成char,然后再反转它。使用std::string::find和std::string::substr一步获取vectString可能是一个更好的主意。
std::string提供了强大的函数,如果您不熟悉它,您可能想看看:http://www.cplusplus.com/reference/string/string/
您想要验证给定字符串是否可以被某些正则表达式接受?如果是这样的话,你为什么不使用一些正则表达式对象来代表你的规则,然后检查它的匹配结果是否等于你的原始字符串?
相关文章:
- 没有为自己的结构调用列表推回方法
- 输入中的字符串数未知(以字母表示)
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- ";结果类型必须是可从输入范围的值类型""构造的;创建std::vector时
- 获取通过重定向传入的输入文件的名称?
- C++从对象自己的类中删除对象
- 使用 std::optional,而不是自己的结构
- 用户输入字符串的文件附加问题..C++
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 子轴围绕父轴而不是他自己的轴旋转
- 如何使用逗号解析输入中的整数
- 将矩阵乘以我自己的输入的向量
- 尝试检查输入的文本与我自己的自定义答案
- C++编写自己的输入操纵器
- 如何为我的语言编写自己的Windows输入工具软件
- 如何输入矩阵样式的txt文件,而不是为C++定义我自己的int 2D数组
- 在 C/C++ 中滚动自己的键盘/输入系统
- 创建自己的输入蒙版