创建自己的输入掩码

时间:2011-11-09 09:56:25

标签: c++

基本上我想针对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);

    }

2 个答案:

答案 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)

您想验证某些正则表达式是否可以接受给定的字符串? 如果是这种情况,为什么不直接使用一些表示规则的正则表达式对象,然后检查其匹配结果是否等于原始字符串?