2014-09-18 3 views
0

Мне нужно извлечь подстроки из строки, если подстрока находится между разделителем начала и разделителем конца.Извлечь подстроки между двумя разделителями символов из строки в C++

Для, например, моя строка:

12345\Disk&Ven_SRT&Prod_USB_3.0_JET_16G&Rev_1100&049113082705515646000190&0] 

Стартовый разделитель '_' и конец разделителем является '&'. Мне нужны все подстроки, которые находятся между «_» и «&». то есть мой вывод должен быть:

SRT USB_3.0_JET_16G 1100 

Я попытался с помощью наддува :: Tokenizer, но размечает строку «USB_3.0_JET_16G» также, так как он содержит «_». Поэтому моя цель - это то, что приходит между «_» и «&», должно быть частью подстроки, и если существует более одного разделителя начала и конца, все эти подстроки должны быть получены.

Как это сделать? Я использую VS 2010.

Спасибо

+0

Есть много возможных решений для этого, что вы пробовали до сих пор? Как это работает? Как это не сработало? –

+0

@JoachimPileborg: я использовал boost :: tokenizer, указав 'boost :: char_separator sep (" _ &]"); '. Но он разделил второе подглаживание, которое мне потребовалось в дальнейшем, в зависимости от наличия '_'. – Jackzz

+0

Возможно, читайте подстроки, используя простые циклы, но я предпочитаю библиотечные функции для этого. – Jackzz

ответ

0

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

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

+0

Это сработало. Спасибо. – Jackzz

Смежные вопросы