字符串操作---C语言与C++

字符串在存储上类似与字符数组,它的每一位的单个元素都是可以提取的。字符串操作就是一串为整体作为操作对象。例如:查找某个子串、删除某个子串等等。

一、C语言中的字符串操作

strcpy(str1,str2); 复制字符串

strncpy(str1,str2,n); 复制指定长度的字符串

strcat(str1,str2); 拼接字符串

strncat(str1,str2,n); 拼接指定长度的字符串

strcmp(str1,str2); 比较两个字符串

strncmp(str1,str2,n); 比较指定长度的字符串,计较过程中,任何一个字符串的长度小于n,则n将被较短的字符串长度取代

strnicmp(str1,str2,n); 与strncmp的不同是,比较他们的小写字母版

strcasecmp(str1,str2);忽略大小写比较两个字符串

strlen(str1); 取字符串长度

strchr(str1,c); 在字符串中查找指定字符

strrchr(str1,c); 在字符串中反向查找指定字符

strstr(str1,str2); 查找字符串

strset(str1,c); 将字符串中的所有字符设为指定字符c

strnset(str1,c,n); 将一个字符串中的n个字符都设为指定字符c

strpbrk(str1,str2); 查找str2中任何一个字符在str1中首次出现的位置,不包含字符串结束符NULL

strrev(str); 将字符串中的字符顺序颠倒过来

strupr(str); 将字符串中所有小写字母替换成相应的大写字母

strlwr(str); 将字符串中所有的大写字母替换成相应的小写字母

memset(str1,(int)c,n); 将str1前面的n个字符改为字符c

例如:

#include <stdio.h> 

#include <string.h>

int main()

{    

       char str1[100]= "abcdefg";

          int c='2';

          int n=3;

       memset(str1,c,n);    

       printf("%s\n", str1);

       return 0; 

}

输出结果为:222defg

memmove(str1,str2,n); 从str2复制n个字符到str1,如果str1和str2出现重叠,函数会自动处理

memcpy(str1,str2,n); 与memmove功能一样,但是不能处理str1和str2出现重叠

二、C++字符串操作

1、字符串赋值

   = ”和assign()

具体用法:

#include <iostream>

#include <string>

using namespace std;

int main()

{      

    string str1="yesterday once more";

       cout<<"str1="<<str1<<endl;

 

    string str2  ("my heart go on"); 

    cout<<"str2="<<str2<<endl;

 

    string str3,str4;    

    str3.assign(str2,3,6);//=heart

       cout<<"str3="<<str3<<endl;

 

    str4.assign(str2,3,string::npos);//=heart go on (2开始到结尾赋给str4)npos表示的最大值

       cout<<"str4="<<str4<<endl;

 

    str4.assign("gaint");//=gaint

       cout<<"str4="<<str4<<endl;

 

    str4.assign("nico",5);//= nico

       cout<<"str4="<<str4<<endl;

 

    str4.assign(5,'x');//=xxxxx

    cout<<"str4="<<str4<<endl;

   

    return 0;

}

2、字符串增加

  “+=”,append(),push_back()

具体用法:

s+=”my name is Tom”;

s+=a;

s.append(str1,1,3);

s.append(str1,2,string::npos);

s.append(“abc”);

s.append(“def”,5);

s.append(5,’x’);

s.push_back(‘a’);//这个函数只能增加单个字符

3、字符串交换swap()

str1.swap(str2); 交换两个字符串的内容

4、字符串插入insert()

s.insert(0,”my name”);

s.insert(1,str);

这个形式的insert()函数不支持传入单个字符,这时的单个字符必须写成字符串形式。

5、字符串删除erase()

s.erase(1);//从第二个(1是下标)开始往后删除

s.erase(1,3);//从第二个开始往后删3个

6、字符串替换

s.replace(1,2,str1); //从第二个开始,往后2个,替换为字符串str1

7、字符串查找find()

s.find(c,n);在字符串s中从第n+1个字符(n为下标)开始查找字符c,找到返回下标,没找到返回-1

8、取字符串

substr(n,m);取出从n+1到n+m+1的子字符串(n,m都为下标)

还会陆续更新。。。。。。。

猜你喜欢

转载自blog.csdn.net/ysz171360154/article/details/84324409