字符串在存储上类似与字符数组,它的每一位的单个元素都是可以提取的。字符串操作就是一串为整体作为操作对象。例如:查找某个子串、删除某个子串等等。
一、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都为下标)
还会陆续更新。。。。。。。