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