[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());
}

原文链接: https://www.cnblogs.com/iyjhabc/archive/2013/05/10/3070789.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/87900

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午11:20
下一篇 2023年2月9日 下午11:20

相关推荐