Я должен извлечь подстроки из строки, если подстрока находится между разделителем начала и конечным разделителем.
Например, моя строка:
12345\Disk&Ven_SRT&Prod_USB_3.0_JET_16G&Rev_1100&049113082705515646000190&0]
Начальным разделителем является "_", а разделитель конца - "&". Мне нужны все подстроки, которые находятся между '_' и '&'. т.е. мой вывод должен быть:
SRT USB_3.0_JET_16G 1100
Я попытался использовать boost :: tokenizer, но он также расшифровывает строку "USB_3.0_JET_16G", так как содержит "_". Поэтому моя цель - это то, что приходит между "_" и "&", должно быть частью подстроки, и если существует более одного разделителя начала и конца, все эти подстроки должны быть получены.
Как это сделать? Я использую VS 2010.
Спасибо
Одно из возможных решений - сделать это за два прохода: сначала вы обозначаете символы '&'
, что легко, так как ни одна из ваших нужных подстрок не содержит этого символа.
Затем во втором проходе вы просто отбрасываете любой текст до (и включаете) первый символ '_'
из подстрок, которые вы получили в первом проходе.
boost::char_separator<char> sep("_&]");
, Но он разделил вторую подстроку, которая мне потребовалась, в зависимости от того, где встречается '_'.