0

したがって、このような文字列login=julius&password=zgadnij&otherArg=ValueをN個の引数で解析する必要があり、各引数には値があります。このようなtiGET引数とPOSTリクエストを見つけることができます。では、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 に答える