概述
字符串截取,莫非就是查找截取点的位置,然后从上一个截取点到下一个截取点的字符子串分割
采用C函数strtok
void strsplit(const char* srcStr, const char* ch)
{
if (srcStr)
{
char* chPtr = strtok((char*)srcStr, ch);
while (chPtr)
{
DebugLog("%s", chPtr);
chPtr = strtok(NULL, ch);
}
}
}
采用C++字符串处理函数
void splitString(const std::string& src, const std::string& sep, std::vector<std::string>& destVec)
{
std::string::size_type pos1, pos2;
pos1 = 0;
pos2 = src.find(sep);
while (pos2 != std::string::npos)
{
destVec.push_back(src.substr(pos1, pos2-pos1));
pos1 = pos2 + ch.size();
pos2 = src.find(sep, pos1);
}
if (pos1 != src.length())
{
destVec.push_back(src.substr(pos1));
}
}
采用C语言指针方式
void cstrsplit(const char* srcStr, const char ch)
{
if (srcStr)
{
char* p1, * p2;
p1 = (char *)srcStr;
p2 = strchr(p1, ch);
while (p2)
{
int len = p2 - p1;
char* subStr = (char*)malloc(len + 1);
if (subStr)
{
memset(subStr, 0x00, len + 1);
memcpy(subStr, p1, len);
DebugLog(subStr);
free(subStr);
subStr = NULL;
}
p1 = p2 + 1;
p2 = strchr(p1, ch);
}
if (p1 && !p2)
{
int len = strlen(srcStr) - strlen(p1);
char* subStr = (char*)malloc(len + 1);
if (subStr)
{
memset(subStr, 0x00, len + 1);
memcpy(subStr, p1, len);
DebugLog(subStr);
free(subStr);
subStr = NULL;
}
}
}
}