关于字符串的一些基本操作

字符串:
字符串就是字符数组加上结束符'\0'
可以使用字符串初始化字符数组,但此时应注意,每个字符串结尾暗含'\0'
因此字符数组的长度应比字符串多1
char a1[ ]={'c','+','+'}    字符数组
char a2[ ]={'c','+','+','\0'}    字符串
char a3[ ]={"c++"}     字符串
数组本身就是指针 可以不用& 
如s[100]      scanf("%d",s)   若从下标2开始 为scanf("%d",s+2)
但读取变量需加  scanf("%d",&s[20])
由于某些题目中需要读入空格(以字符串s为例)
要使读入字符不被空格中断 :
读入char类型:
1.使用fgets (s // 数组名,10000 // 最多读入数, stdin // 固定格式) 
但注意 fgets 会读入最后一下回车!!! 
// 不建议使用gets,过时了
2.可以用cin.getline(s,10000)   
读入string类型:  用getline(cin,s)         (acwing765:字符串加空格 , acwing 769:替换字符 )
输出可以用puts(s) ,puts会自动换到下一行
字符数组的一些常用操作,需要引入头文件<cstring>
strlen(str)    求字符串长度,不包含'\0'
strcmp(a,b)    比较两个字符串大小,比较方式为字典序
    若a<b,返回负数;  a==b,return 0  ;a>b,返回正数;
strcpy(a,b)    将字符串b复制给从a开始的字符数组
s.substr(i,len//长度) 返回从i开始,长度为len的一段,如果省略len会直接到结尾
遍历字符数组中的字符(acwing 772:只出现一次的字符)

for(int i=0,len=strlen(a);i<len;i++)
        cout<<a[i]<<endl;
关于 string 的读写(acwing765:字符串加空格 , acwing 769:替换字符 )
 cin>>s1; // 会截止在空格
 getline(cin,s1); // 读取一整行,不被空格中断
string s2,s2;
 
cin>>s1; // 会截止在空格

getline(cin,s1); // 读取一整行,不被空格中断

 s1.size( )即为字符串s1长度
重点:
 string可以直接相互比较
 两个string可以直接相加,即后者拼接在前者之后
(acwing 773:字符串插入 , acwing 775:倒排单词 )
 string后也可以直接加字符串和字符
(例如string s2=s1+','+"word"可以,但是s2=','+"word"+s1就不行,因为字面值不能直接相加而且运算是从左到右的)
字面值和string对象相加的原理:
在做加法运算时,字面值和字符都会变成string对象,因此相加就是将这些字面值串联起来
处理string对象中的字符
可以直接将string当成字符数组处理
string s;

for(int i=0,len=s.size();i<len;i++)

    cout<<s[i]<<endl;
当题目中的输入有若干行时,可以使用while(cin>>a)依次输出结果
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值