C++按特定分隔符将字符串分割——实现

方法1. 使用string类的内置函数

该方法的代码如下:

void stringToken(const string sToBeToken, const string sSeperator, vector<string>& vToken)
{
    
    
    string sCopy = sToBeToken;
    int iPosEnd = 0;
    while (true)
    {
    
    
        iPosEnd = sCopy.find(sSeperator);
        if (iPosEnd == -1 )
        {
    
    
            vToken.push_back(sCopy);
            break;
        }
        vToken.push_back(sCopy.substr(0, iPosEnd));
        sCopy = sCopy.substr(iPosEnd + 1);
    }
}

函数的形参表中,vToken为输出的子串组。
==当在 find() 函数找不到我们指定的分隔符的时候,返回值为 -1 ==。

方法2. 使用CString的内置函数

该方法比较复杂,需包含cstring头文件。函数代码如下:

void stringToken(string sLine, const char* pSeperator, vector<char*>& vToken)
{
    
    
    char* cstr = new char[sLine.length()+1];
    strcpy(cstr, sLine.c_str());
    char*p=strtok(cstr, pSeperator);
    vToken.push_back(p);
    while(p)
    {
    
    
        p=strtok(NULL, pSeperator);
        if(!p)
            break;
        vToken.push_back(p);
    }
}

总结

两种方法一种是使用c_string里的 strcpy(字符数组拷贝) 和 strtok(字符数组分割),一种是使用C++的 string 类的 find() 和 substr() 。
第一种方法返回的是string对象的集合,第二种方法返回的是字符数组的集合。两种方法都能直接使用,请读者自行取舍。

如果对你有用,不妨点个赞~~~~~~~

猜你喜欢

转载自blog.csdn.net/GeomasterYi/article/details/106863228