字符串解析?解决思路

字符串解析?????????
{3!0.2,0.3;0.4,0.5;0.6,0.7;}这样的字符串怎么解析?
注‘{’和‘!’之间的3是总坐标个数,0.2是X坐标,0.3是Y坐标。每个坐标以‘;’分割
如何高效的解析!

------解决方案--------------------

size_t StrtokEx(const string& str, const string& delimiters, vector<string>& tokens)
{

string::size_type lastPos = str.find_first_not_of(delimiters,0);

string::size_type pos=str.find_first_of(delimiters,lastPos);

while(string::npos!=pos
------解决方案--------------------
string::npos!=lastPos)
{
tokens.push_back(str.substr(lastPos,pos-lastPos));

lastPos=str.find_first_not_of(delimiters,pos);

pos=str.find_first_of(delimiters,lastPos);
}

return tokens.size();
}

CString str = "{3!0.2,0.3;0.4,0.5;0.6,0.7;}"
str.TrimLeft("{");
str.TrimRight("}");

string str1= string(strchr(str, '!'));

vector<string>& tokens;
StrtokEx(str1, ";", tokens);