2011-04-15 100 views
0

所以我需要用N个参数分析这样的字符串login=julius&password=zgadnij&otherArg=Value,每个参数都有一个值。您可以在POST请求中找到这样的ti GET参数。那么如何使用Boost为这样的字符串创建一个解析器?在& 如何解析POST body/GET参数?

  • 回答

    1

    在这个问题的情况下,由于Tomalak提到,正则表达式可能是一个 小小的矫枉过正。 如果您的实际输入更复杂且需要正则表达式,下面的代码是否说明了用法?

    int main() { 
        using namespace std; 
        using namespace boost; 
        string s = "login=julius&password=zgadnij&otherArg=Value"; 
        regex re_amp("&"), re_eq("="); 
        typedef sregex_token_iterator sti; 
        typedef vector<string> vs; 
        typedef vs::iterator vsi; 
        sti i(s.begin(), s.end(), re_amp, -1), sti_end; 
        vs config(i, sti_end); // split on & 
    
        for (vsi i = config.begin(), e = config.end(); i != e; ++ i) { 
        // split on = 
        vs setting(sti(i->begin(), i->end(), re_eq, -1), sti_end); 
        for (vsi i2 = setting.begin(), e2 = setting.end(); i2 != e2; ++ i2) { 
         cout<< *i2 <<endl; 
        } 
        } 
    } 
    

    希望这有助于

    3
    • 分裂所产生的部分分割上=
    • URL解码两个(!)的名称和值部分

    没有正则表达式的需要。

    +0

    +1;你能添加一些代码示例吗? – Rella 2011-04-15 22:18:55

    +1

    @Blender恐怕我做不到。我没有足够的信心与C敢于。 – Tomalak 2011-04-15 23:04:48