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