iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++怎么实现字符串切割
  • 358
分享到

C++怎么实现字符串切割

2023-07-02 14:07:06 358人浏览 安东尼
摘要

本篇内容介绍了“c++怎么实现字符串切割”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字符串切割的两种方法字符串切割的使用频率还是挺高的,s

本篇内容介绍了“c++怎么实现字符串切割”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    字符串切割的两种方法

    字符串切割的使用频率还是挺高的,string本身没有提供切割的方法,但可以使用stl提供的封装进行实现或者通过c函数strtok()函数实现。

    1、通过stl实现

    涉及到string类的两个函数find和substr:

    1、find函数

    • 原型:size_t find ( const string& str, size_t pos = 0 ) const;

    • 功能:查找子字符串第一次出现的位置。

    • 参数说明:str为子字符串,pos为初始查找位置。

    • 返回值:找到的话返回第一次出现的位置,否则返回string::npos

    2、substr函数

    • 原型:string substr ( size_t pos = 0, size_t len = npos ) const;

    • 功能:获得子字符串。

    • 参数说明:pos为起始位置(默认为0),len为字符串长度(默认为npos)

    • 返回值:子字符串

    代码如下:

    std::vector<std::string> splitWithStl(const std::string &str,const std::string &pattern){    std::vector<std::string> resVec;    if ("" == str)    {        return resVec;    }    //方便截取最后一段数据    std::string strs = str + pattern;        size_t pos = strs.find(pattern);    size_t size = strs.size();    while (pos != std::string::npos)    {        std::string x = strs.substr(0,pos);        resVec.push_back(x);        strs = strs.substr(pos+1,size);        pos = strs.find(pattern);    }        return resVec;}

    2、通过使用strtok()函数实现

    • 原型:char *strtok(char *str, const char *delim);

    • 功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。

    • 描述:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。

    • 其它:strtok函数线程安全,可以使用strtok_r替代。

    代码如下:

    std::vector<std::string> split(const std::string &str,const std::string &pattern){    //const char* convert to char*    char * strc = new char[strlen(str.c_str())+1];    strcpy(strc, str.c_str());    std::vector<std::string> resultVec;    char* tmpStr = strtok(strc, pattern.c_str());    while (tmpStr != NULL)    {        resultVec.push_back(std::string(tmpStr));        tmpStr = strtok(NULL, pattern.c_str());    }        delete[] strc;        return resultVec;};

    字符串分割&类型转换(string->double)

    【自己备用】

    代码如下(示例):

    #include<sstring>//头文件#include<iOStream>using namespace std;int main(){    string line;     ifstream is("2011_6.txt");    while(is>>line)    {        cout<<line<<endl;        istringstream   is1(line.substr(line.find("C")+2,line.find(",")-2));   //创建一个istringstream对象,目的是将()中的字符串转换为数字型        // cout<<line.find("C")<<"    "<<line.find(",")<<endl;        double o_x, o_y, r;        is1>>o_x;         //将转换后的数字输入o_x        cout<<o_x<<endl;        line.erase(line.find("C"),line.find(",")+1);    //将字符串中已经用过的部分擦除,为后面的字符串处理提供便利        cout<<line<<endl;        //cout<<line.find(",")<<endl;        istringstream is2(line.substr(0,line.find(",")));        is2>>o_y;        cout<<o_y<<endl;        line.erase(0,line.find(",")+1);        cout<<line<<endl;        istringstream is3(line.substr(0,line.find(";")));        is3>>r;        cout<<r<<endl;        line.erase(0,line.find(";")+1);        cout<<line<<endl;    }}
    • substr(m,n)表示从位置m开始截取n个字符,返回字符串,m默认0

    • erase(m,n) 表示从位置m开始擦除n个字符,返回字符串,m默认0

    • find(字符a)表示返回字符a所在的位置

    “C++怎么实现字符串切割”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: C++怎么实现字符串切割

    本文链接: https://www.lsjlt.com/news/342408.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • c语言怎么计算字符串长度
      在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
      99+
      2024-05-14
      c语言
    • c语言怎么判断三个数的大小
      可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
      99+
      2024-05-14
      c语言
    • c++排序函数sort怎么使用
      在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
      99+
      2024-05-14
      c++
    • c++中string的compare函数怎么使用
      在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
      99+
      2024-05-14
      c++
    • c++中string的compare函数有什么用
      c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
      99+
      2024-05-14
      c++
    • c++中print函数的功能有哪些
      在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
      99+
      2024-05-14
      c++
    • c语言数据结构怎么使用
      在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
      99+
      2024-05-14
      c语言
    • c++中print函数的用法是什么
      在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
      99+
      2024-05-14
      c++
    • c++中concept的用法是什么
      在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
      99+
      2024-05-14
      c++
    • c++中concept的作用是什么
      在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
      99+
      2024-05-14
      c++
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作