如何用百分比标记字符串?
How to tokenize a string with percentages?
我的目的是以这种方式标记以下输入字符串 %08%04root%08%03KEY%08%05site2%08%11ksk-1483008950879%08%07ID-CERT
:
4root
3KEY
5site2
11ksk-1483008950879
7ID-CERT
然后我尝试了以下方法:
char_separator<char> sepSig("%08");
boost::tokenizer< char_separator<char> > tokenSig(inputString, sepSig);
BOOST_FOREACH (const string& t, tokenSig)
log << "Token: " << t << std::endl;
不幸的是,所有项目“8”都被捕获,划分如下:
Token: 4root //OK
Token: 3KEY //OK
Token: 5site2 //OK
Token: 11ksk-14
Token: 3
Token: 95
Token: 79
Token: 7ID-CERT //OK
然后我需要一种方法来区分项目 %08
和 8
。我也尝试了分隔符 </code> 和 <code>\x08
,但这样整个字符串的标记是相同的。
boost::char_separator
将 any 字符视为分隔符。我看不到 string_separator
- 你可以自己写,或者只是用 "\t"
替换 "%08"
的每个出现,然后在 \t
.[=15= 上分开]
我的目的是以这种方式标记以下输入字符串 %08%04root%08%03KEY%08%05site2%08%11ksk-1483008950879%08%07ID-CERT
:
4root
3KEY
5site2
11ksk-1483008950879
7ID-CERT
然后我尝试了以下方法:
char_separator<char> sepSig("%08");
boost::tokenizer< char_separator<char> > tokenSig(inputString, sepSig);
BOOST_FOREACH (const string& t, tokenSig)
log << "Token: " << t << std::endl;
不幸的是,所有项目“8”都被捕获,划分如下:
Token: 4root //OK
Token: 3KEY //OK
Token: 5site2 //OK
Token: 11ksk-14
Token: 3
Token: 95
Token: 79
Token: 7ID-CERT //OK
然后我需要一种方法来区分项目 %08
和 8
。我也尝试了分隔符 </code> 和 <code>\x08
,但这样整个字符串的标记是相同的。
boost::char_separator
将 any 字符视为分隔符。我看不到 string_separator
- 你可以自己写,或者只是用 "\t"
替换 "%08"
的每个出现,然后在 \t
.[=15= 上分开]