zoukankan      html  css  js  c++  java
  • [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());
    }
  • 相关阅读:
    递归函数及Java范例
    笔记本的硬盘坏了
    “References to generic type List should be parameterized”
    配置管理软件(configuration management software)介绍
    WinCE文件目录定制及内存调整
    使用Silverlight for Embedded开发绚丽的界面(3)
    wince国际化语言支持
    Eclipse IDE for Java EE Developers 与Eclipse Classic 区别
    WinCE Heartbeat Message的实现
    使用Silverlight for Embedded开发绚丽的界面(2)
  • 原文地址:https://www.cnblogs.com/iyjhabc/p/3070789.html
Copyright © 2011-2022 走看看