实际使用字符串,常常需要根据制定的格式拼好字符串,然后按照实际反向再解析获取字符串。例如:
string str = "00001|00009|00015" 需要分别得到:char arStr[] = {"00001", "00009", "00015"},需要一个算法来实现这种字符串的截取,如下是我写的一个实现代码
//将item 按照字符 ch进行截取成几个字符串,并保存到v 中 template <typename T> void Split(const char *item, char ch, vector<T> &v) { const char *pcPos1 = item; const char *pc_Pos2 = item; const char *pEnd = item + strlen(item); int iLen = 0; while (pc_Pos2<pEnd) { if (*pc_Pos2 == ch) { iLen = pc_Pos2 - pcPos1; if (iLen > 0) { string str(pcPos1, iLen); const char *pStr = str.c_str(); v.push_back(atoi(pStr)); } pcPos1 = pc_Pos2 + 1; } ++pc_Pos2; } iLen = pEnd - pcPos1; if (iLen > 0) { string str(pcPos1, iLen); const char *pStr = str.c_str(); v.push_back(atoi(pStr)); } }