2011-04-15 81 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