Извлечение подстрок между двумя символами-разделителями из строки в c ++

0

Я должен извлечь подстроки из строки, если подстрока находится между разделителем начала и конечным разделителем.

Например, моя строка:

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.

Спасибо

  • 0
    Есть много возможных решений этого, что вы пробовали до сих пор? Как это работает? Как это не сработало?
  • 0
    @JoachimPileborg: я использовал boost :: tokenizer, указав boost::char_separator<char> sep("_&]"); , Но он разделил вторую подстроку, которая мне потребовалась, в зависимости от того, где встречается '_'.
Показать ещё 2 комментария
Теги:
string
visual-studio-2010

1 ответ

0
Лучший ответ

Одно из возможных решений - сделать это за два прохода: сначала вы обозначаете символы '&', что легко, так как ни одна из ваших нужных подстрок не содержит этого символа.

Затем во втором проходе вы просто отбрасываете любой текст до (и включаете) первый символ '_' из подстрок, которые вы получили в первом проходе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню