所以我需要用N个参数解析这样的字符串login=julius&password=zgadnij&otherArg=Value
,每个参数将有一个值。您可以在POST请求和ti GET参数中找到这样的参数。那么如何使用Boost为这些字符串创建解析器呢?
- 在
&
上分裂 - 在
=
上分割结果部分 - url -解码(!)名称和值部分
在这个问题中,正如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;
}
}
}
希望能有所帮助