所以我需要用N个args解析这样的字符串login=julius&password=zgadnij&otherArg=Value
,每个arg都有一个值。你可以在POST请求中找到这样的ti GET参数。那么如何使用Boost为这些字符串创建一个解析器?
答案 0 :(得分:3)
&
=
不需要正则表达式。
答案 1 :(得分: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;
}
}
}
希望这有帮助