Функция qi :: repeat (1,2) в правиле предупреждает меня, и я не хочу игнорировать это предупреждение, поэтому я хочу оптимизировать этот код, например, отделяя правило от метод парсинга.
qi :: фразе_parse делает то же самое, что и в правиле, но я хочу задать правило и передать правило функции pharse_parse.
std::ifstream ifs("f:/test.txt");
std::string line;
//In header in my code
std::vector<unsigned long long> v_BF_Char;
//qi::int_parser<uintmax_t, 16> hex_int;
static qi::uint_parser<unsigned long long, 16, 16, 16> hex_int;
while (std::getline(ifs, line))
{
typedef std::string::const_iterator It;
It begin = line.begin(), end = line.end();
// rule for grammer
qi::rule<It, unsigned long long()> braced_hex = '<' >> qi::repeat(1,2)[hex_int] >> '>';
bool ok = qi::phrase_parse(begin, end,
*('<' >> qi::repeat(1,2)[ hex_int ] >> '>'), qi::space, v_BF_Char);
и хочу сделать что-то вроде этого
bool ok = qi::phrase_parse(begin, end,
braced_hex , qi::space, v_BF_Char);
test.txt содержат
<51dc> <04001C0180000000000000000EE317BC>
<05001C0180000000> <04001C0180000000000000000EE317BC>
<51dc> <30ea30f330ae30c330c8>
<0000> <fffd>
<003d> <00a5>
<005d> <00a6>
<005e> <007d>
<005f> <0303>
<0060> <2019>
<0061> <005c>
<0062> <2018>
<0063> <007c>
<0064> <007e>
<0068> <2044>
<0069> <0192>
<006a> <00a7>
<006b> <00a4>
<006c> <201c>
Мой код работает только для 2-й строки и извлекает значения в векторе, но не для других значений строк.
std::vector<uint8_t>
? - person sehe   schedule 17.06.2015