您好,我一直在尝试使用 boost 库标记器类使标记器工作。我在 boost 文档中找到了本教程:
http://www.boost.org/doc/libs/1 _36 _0/libs/tokenizer/escaped _list _separator.htm
问题是我无法将参数转义为 _list _separator("","","");
但是如果我修改 boost/tokenizer.hpp 文件,它就可以了。但这不是,理想的解决方案是想知道我是否缺少任何东西来将不同的参数放入转义的_list _separator。
我想用 " 和 ' 将其拆分为空格以进行转义,并且在引用的字符串中没有转义字符。
这用于游戏控制台系统中的参数解析系统。
include <iostream>
include <boost/tokenizer.hpp>
include <string>
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<escaped_list_separator<char>(separator1,separator2,separator3)> tok(s);
for(tokenizer<escaped_list_separator<char>(separator1,separator2,separator3)>::iterator beg=tok.begin(); beg!=tok.end();++beg)
{
cout << *beg << "\n";
}
}
Visual Studio 2005 的错误是错误 C2974:'boost::tokenizer':'TokenizerFunc' 的模板参数无效,输入预期
编辑:这个问题是由 ferrucio 提出的,并由彼得谢谢大家解释。