从字符串中提取多个子字符串

时间:2015-09-21 02:47:47

标签: c++ string sockets

以下是从客户端发送并由服务器接收的消息示例。

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

如何在P_ID:[]&之间提取信息?有效地在服务器上MSG:[]并从信息中删除括号?

例如:

转动MSG:[This is a test message...]

进入This is a test message...

2 个答案:

答案 0 :(得分:4)

第一个也是最明显的方式是string::find(“MSG:[”)然后string::substr()来完成其余的工作。

类似的东西:

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

但是在c ++ 11中更优雅和灵活的方式是在正则表达式MSG:\[(.*)\]

上通过std :: regex_match使用正则表达式

答案 1 :(得分:0)

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