您好我一直在尝试使用boost库tokenizer类来使用tokenizer.我在boost文档中找到了这个教程:
http://www.boost.org/doc/libs/1 _36 _0/libs/tokenizer/escaped _list _separator.htm
问题是我不能让参数逃脱_list _separator("","","");
但如果我修改boost/tokenizer.hpp文件就可以了.但那并不是理想的解决方案,想知道是否有任何我想要的东西,以便在转义的_list _separator中获得不同的参数.
我想把它拆分为空格,用"和"表示转义,并且在引用的字符串中没有转义字符.
这用于在游戏控制台系统中进行参数解析系统.
includevisual studio 2005的错误是错误C2974:'boost :: tokenizer':'TokenizerFunc'的模板参数无效,类型预期include include int main() { using namespace std; using namespace boost; string s = "exec script1 \"script argument number one\""; string separator1("");//dont let quoted arguments escape themselves string separator2(" ");//split on spaces string separator3("\"\'");//let it have quoted arguments tokenizer
(separator1,separator2,separator3)> tok(s); for(tokenizer (separator1,separator2,separator3)>::iterator beg=tok.begin(); beg!=tok.end();++beg) { cout << *beg << "\n"; } }
编辑:这个问题由ferrucio认可,并由彼得谢谢的所有人解释.
试试这个:
#include#include #include int main() { using namespace std; using namespace boost; string s = "exec script1 \"script argument number one\""; string separator1("");//dont let quoted arguments escape themselves string separator2(" ");//split on spaces string separator3("\"\'");//let it have quoted arguments escaped_list_separator els(separator1,separator2,separator3); tokenizer > tok(s, els); for(tokenizer >::iterator beg=tok.begin(); beg!=tok.end();++beg) { cout << *beg << "\n"; } }