• [C++]字符串处理方法(STL与C风格)


    STL string
    1、初始化-把c字符串转换成string
    char s[]="abc e df";
    string str=s;
    string str(5,'x');//初始化为5个x

    2、查找
    从前开始搜索:str.find(目标子串,开始搜索位置)
    从后开始搜索:str.rfind
    如查找不到目标,则返回string::npos

    3、替换
    str.replace(开始下标,覆盖长度,替代字符串,可加<使用代替字符串长度>)
    当覆盖长度填为0时,其实就是插入操作。

    4、删除
    str.erase(开始下标,删除长度)

    5、插入
    str.insert(开始下标,插入字符串)

    6、比较
    str.compare(与str对比的字符串)
    -1为str小,1为str大,0为相等。如果前段相等短的小。

    7、返回c风格字符串
    str.c_str();//返回值是const char*

    8、分割
    string substr (开始下标,截取长度);

    c风格字符串
    1、分割

    char *p=strtok(s,d);//第一次得到结果,s为目标串,d为tok
    while(p){
        cout<<p<<endl;
        p=strtok(NULL,d);//得到后续结果,目标串用NULL代替
    }

    2、比较
    strcmp(s1,s2); //-1为s1小,1为s2小,0为相等。如果前段相等短的小。

    3、连接(加到目标串尾部)
    char *strcat(char *dest,char *src);
    把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符
    串。

    4、复制
    char *strcpy(char *dest,char *src);
    把src的字符串连\0复制到dest,必须保证dest有足够空间。

    5、长度
    unsigned int strlen(char *s);
    计算字符串s的(unsigned int型)长度,不包括结束符\0。

    6、字符串与数字的转换

    itoa(int i,char *p result,进制),一般进制填10,表示十进制。

    任意的小数整数转字符串,都可以用sprintf(result,格式"%d",i)

    对于字符串转数字,atoi和atof使用就比较简单了,直接传入需要转换的数字即可。

    自行封装函数:

    https://github.com/iyjhabc/simple_algorithm

    /*把strBig包含的strsrc替换成strdst*/
    void string_replace(string & strBig, const string & strsrc, const string 
    &strdst) {
        string::size_type pos=0;
        string::size_type srclen=strsrc.size();
        string::size_type dstlen=strdst.size();
        while( (pos=strBig.find(strsrc, pos)) != string::npos){
          strBig.replace(pos, srclen, strdst);
          pos += dstlen;
        }
    }
    
    void string_replace(char *strBig, const char *strsrc, const char *strdst) 
    {
        string strtmp(strBig);
        string::size_type pos=0;
        string::size_type srclen=strlen(strsrc);
        string::size_type dstlen=strlen(strdst);
        while( (pos=strtmp.find(strsrc, pos)) != string::npos){
          strtmp.replace(pos, srclen, strdst);
          pos += dstlen;
        }
      strcpy(strBig,strtmp.c_str());
    }
  • 相关阅读:
    在VMware9.0上安装CentOS6.3+mysql5.5.28数据库 东师理想
    Python学习总结(二)python的练习方法
    gdb调试nasm语法的汇编程序(转载)
    配置Bochs
    量变与质变(生活中,技术上)
    设置gdb反汇编语法为intel(转载)
    Python学习总结(一)
    2012暑假计划
    理解TCP为什么需要进行三次握手(白话)(转载)
    对自己的学习方式的思考(转载)
  • 原文地址:https://www.cnblogs.com/iyjhabc/p/3070789.html
Copyright © 2020-2023  润新知