2015-09-21 5 views
0

Ниже приведен пример сообщения, отправленного с Клиента и полученного сервером.Извлечение нескольких подстрок из строки

"P_ID:[1]MSG:[This is a test message...]" 

Как можно эффективно извлекать информацию между P_ID:[]MSG:[] & на сервере и удалить скобки из информации?

Например:

Turning MSG:[This is a test message...]

в This is a test message...

+0

Используйте это решение: http://stackoverflow.com/questions/9823263/string-tokenization-in-c-including-delimiter-characters – lsalamon

ответ

4

Первый и самый очевидный способ будет string::find ("MSG: ["), а затем string::substr(), чтобы получить остальное.

Нечто подобное:

size_t start = data.find("MSG:["); 
std::string msg = data.substr(start, data.find("]", start) - start); 

Но более элегантный и гибкий способ в C++ 11 будет использовать регулярное выражение с помощью станд :: алгоритма regex_match на регулярное выражение MSG:\[(.*)\]

0
var subString = data.SubString(data.IndexOf('['),data.IndexOf(']')); 
+0

можете ли вы добавить пояснения к своему коду? –

+0

Не правильный язык ... – Jarod42

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