0

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

4

2 回答 2

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

不需要正则表达式。

于 2011-04-15T21:38:29.363 回答
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;
    }
  }
}

希望这可以帮助

于 2011-04-15T23:59:48.087 回答