基本上我想针对DB中的掩码验证一个字符串,但要对其进行验证我需要为该掩码分配一个规则,即[D] = 0<=10
。所以我所做的就是检索那个掩码并从字母中提取[]并将它们存储在两个不同的向量中,所以我的问题是,你可以用向量为各个单元格分配规则
即
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);
}
答案 0 :(得分:0)
我真的不明白你的问题,但这是我的建议:
不要使用巨大的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/
答案 1 :(得分:0)
您想验证某些正则表达式是否可以接受给定的字符串? 如果是这种情况,为什么不直接使用一些表示规则的正则表达式对象,然后检查其匹配结果是否等于原始字符串?