如何解析POST正文/ GET参数?

时间:2011-04-15 21:24:48

标签: c++ regex parsing boost boost-regex

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

2 个答案:

答案 0 :(得分:3)

  • 拆分为&
  • 将结果部分拆分为=
  • URL解码(!)名称和值部分

不需要正则表达式。

答案 1 :(得分: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;
    }
  }
}

希望这有帮助