Здравствуйте, я пытался заставить токенайзер работать, используя класс токенайзера библиотеки повышения.
Я нашел этот урок в документации по бусту:
http://www.boost.org/doc/libs/1 _36 _0 / libs / tokenizer / escape_list _separator.htm
проблема в том, что я не могу получить аргумент для экранированного _list _separator ("", "", "");
но если я изменю файл boost / tokenizer.hpp, он будет работать.
но это не так, и идеальным решением было задаться вопросом, есть ли что-то, чего мне не хватает, чтобы получить разные аргументы в экранированном _list _separator.
Я хочу разделить его на пробелы с "и" для экранирования и без экранирующего символа внутри строки в кавычках.
используется для системы анализа аргументов в игровой консоли.
<code>
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";
}
}
ошибка из visual studio 2005 есть
ошибка C2974: 'boost :: tokenizer': неверный аргумент шаблона для 'TokenizerFunc', ожидаемый тип
EDIT:
Этот вопрос был задуман Феррусио и объяснен всеми Питером Хейлом.