使用STL进行字符串分割(C++)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/L_J_Kin/article/details/52046177

在写C++程序过程中,有时候会遇到字符串分割的问题,写一个字符串分割的函数,便于以后使用。

使用STL进行字符串分割涉及到string类的两个函数find和substr:
1、find函数
原型:size_t find ( const string& str, size_t pos = 0 ) const;
功能:查找子字符串第一次出现的位置。
参数说明:str为子字符串,pos为初始查找位置。
返回值:返回查询结果的迭代器

2、substr函数
原型:string substr ( size_t pos = 0, size_t n = npos ) const;
功能:获得子字符串。
参数说明:pos为起始位置(默认为0),n为结束位置(默认为npos)
返回值:一个子字符串,从其指定的位置开始
备注:如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。

实现如下:

bool strsegmentation(string input,char c,vector <string> &segment)
{
    //input     输入的字符串
    //c         分割符
    //segment   输出分割字符片段(集)
    if(input=="")
        return false;
    string tempstr;
    int comma;
    while (1) 
    {
        comma=input.find(c);
        if(comma==-1)
        {
            tempstr=input.substr(0,input.length());
            segment.push_back(tempstr);
            break;
        }
        tempstr=input.substr(0,comma);
        input.erase(0,comma+1);
        segment.push_back(tempstr);
    }
    if(segment.size()==0)
    {
        printf("输入字符串为空...\n");
        return false;
    }
    return true;
}

main函数中:

int main(int argc, char* argv[])
{
    string teststr="qwert tdytf gugug35 7665 75567 2wdrt6";
    vector <string> segment;
    if(!strsegmentation(teststr,' ',segment)) return 0;

    for (int i=0;i<segment.size();++i)
        cout<<segment[i]<<endl;

    system("pause");
    return 0;
}

运行结果:
这里写图片描述

希望对大家有帮助。

猜你喜欢

转载自blog.csdn.net/L_J_Kin/article/details/52046177