Это типичный выход для этого

ствуйте, я пытался заставить токенайзер работать, используя класс токенайзера библиотеки повышения. Я нашел этот урок в документации по бусту:

http://www.boost.org/doc/libs/1 _36 _0 / libs / tokenizer / escape_list _separator.htm

проблема в том, что я не могу получить аргумент для экранированного _list _separator ("", "", "");

но если я изменю файл boost / tokenizer.hpp, это сработает. но это не так, и идеальным решением было задаться вопросом, есть ли что-то, чего мне не хватает, чтобы получить разные аргументы в экранированном _list _separator.

Я хочу разделить его на пробелы с "и" для экранирования и без экранирующего символа внутри строки в кавычках.

это используется для системы анализа аргументов в игровой консольной системе.


include <iostream>
include <boost/tokenizer.hpp>
include <string><p></p>

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"; } } the error from visual studio 2005 is error C2974: 'boost::tokenizer' : invalid template argument for 'TokenizerFunc', type expected

EDIT: This question was awnsered by ferrucio and explained by peter thank's everybody.

Ответы на вопрос(3)

Ваш ответ на вопрос