字符串01

两种风格:字符数组和string 一个是C风格一个是c++风格。

1、字符数组:格式char s1[100];

                        在我们创建字符数组的时候,数组末尾以'\0'结尾。

                        存储数据:char s1[100]="hello world";空格也是一个字符。

                        如果我们要在字符数组中某一位上存储一个字符,我们可以这样做s1[0]='a'注意是单括号。那这个字符数组就变成了"aello word"。

                        如果我们在某一位上写入一个结束符'\0'那这个字符数组就变成了"hello"

                        如果我们用cin写入字符数组,那写入后没有空格,格式是cin>>s1;还有一种方法出入字符数组,那就是格式化输入,格式是scanf("\d",s1),他在写入后也是没有空格。

                        同样我们在输出字符数组的时候我们也有两种方法一个是cout,一个是printf,如果我们要用cout时格式时:cout<<s1;如果我们要用printf的时候格式是:printf("%s",s1)

                        还有一种方法读取字符cin.getline(s1,99)//99是这个读取是的最大上限。

                        如果我们要求字符数组中一共有几个字符我们可以用这个格式:strlen(s1)

                        遍历字符数组

int n=strlen(s1);
for(int i=0;i<len;i++){
    s[i];

}

                        如果我们要将字符数组中的一个字符修改成另外一个字符,代码是;

strcpy(s1,"abcd");
cout<<s1;//ancd
strcpy(s2,s1);//把s1复制给s2.

                        字符串拼接(单个字符)

strcat(s1,"abcd");
cout<<s1;//abcdabcd

                        字典序:

                                   假如我们要判断”abcdef“与”abd“那第二个大,我们是按照一位一位从前往后比较。

                        判断字符数组

char s1[100],s2[100];
strcmp(s1,s2);
返回值:1、>0第一个大
        2、=0一样大
        3、<0第一个比较小

                        子串

                        空串是任何字符串的子串。

                        ”abcde“->"", "a" "b"……"ab"……

                        子序列(不连续的子串)

                        前缀(从开头开始去子串连续)

                        后缀(在字符串中任意往后取得的子串)

                        

strstr(s1,s2);//找子串
如果没有找到返回NULL
if(strstr(s1,s2)!=NULL){
	cout<<strstr(s1,s2)-s1;//如果找到输出下标 
	//s1:"abcde"
	//s2:"de" 
}

2、string(字符串)(最大放4611686018……)19位

创建:string s1("abcdef");

替换:s1[0]='k';返回值:kbcdef

           s1[3]='\0';返回值:kbcef没有截断

出入:cin>>s1;没有空格

           getline(cin,s1)读入字符串有空格,没有上限

输出:cout<<s1;

赋值:s1="ababababab";

           s2=s2;(s1必须是string但s2可以是数组也可以是字符串)

函数:to_string(123)把int强制转换成string

           stio(123)把string强制转换成int

           itoa(123)把int转成char

           strcpy(s1,itoa(123));

           atoi(s1)把char转成int

求长度:

string s1("abcde");
int len=s1,length();

比较字符串: 

string s1("abcde");
string s2;
if(s1>s2)//比较字典序
s1=s1+"abc";//拼接
string st[100];
st[0];//string
st[i][j]//char st[i]里下标为j的字符
常用函数:
string si("abce");

s1,find("a")//找子串
返回值0,如果没有返回-1,下标
s1.find("a",2);
从第二个开始找
s1.rfind("a")
找最后一个出现的


s1.substr(pos,len);
从第一个变量开始,第二个变量的长度 提取子串 

s1.erase(pos,len);
从第一个变量开始,擦除第二个变量的长度

s1.replace(pos,len,args);
从第一个变量开始,第二个变量是替换的长度,替换成什么 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值