c++中string常用用法详解(+例子部分代码)

3 篇文章 0 订阅

小白笔记

前言

        string 在cpp中相当于一个字符串类,类里面的是char*,类里所维护的是一个字符串。

一、string 字符串赋值

string 字符串赋值

        string()无参构造函数,string str = 字符串;string(const *char)有参构造函数,直接赋值相当于;string(const string &str)使用一个string对象初始化另一个string对象
另一个字符串赋值的assign函数
        string str ; str.assign(const char* c )把某个字符串赋值给str
        string str ; str.assign(const char *c , int n )把某个字符串前n个字符赋值给当前字符串
        string str ; str.assign(const string & s ) 把某string类型的字符串赋值给str
        string str ; str.assign(int n , char c)给str字符串输入n个c字符进行赋值

二、string 字符串的拼接

string 字符串的拼接

        string+= (字符串)+=(字符)+=(string类型的字符串)直接在后面添加,相当于字符串长度增加,在后面添加
        另一个字符串拼接的append函数
        string str ; str.append(const char *s)把字符串添到str结尾
        string str ; str.append(const char *s , int n )把字符串s前n个字符添到str结尾
        string str ; str.append(const string &s)把string类型的字符串添到str的结尾(效果同str+=s)
        string str ; str.append(const string &s , int pos , int n )把string类型的字符串从pos这个下标开始的n个字符添到str的结尾

三、string 查找和替换

string 查找和替换

        find函数,会返回一个整型值(返回下标位置)rfind从后面进行查找,同样返回一个整型值
        find(const string& str , int pos = 0 )const,查找str在字符串中第一次出现的位置,从pos开始进行查找;rfind(const string& str , int pos = npos )const,是从字符串后往前进行查找,即str最后一次出现的位置,从pos开始进行查找,这里pos相当于字符串末端

例子
        string str1 ="abcdeabcde" ; string str2 = "ab"; int pos1 = str1.find(str2); int pos2 = str1.rfind(str2);
        那么pos1值就是0,pos2值就是5
        

        find(const char*s , int pos = 0 )const,rfind(const char*s , int pos = npos )const与上面意思相同
        find(const char c , int pos = 0 )const,rfind(const char c , int pos = npos )const与上面的意思相同,就是查找里面的字符串变成了查找里面的字符了
        find(const char*s , int pos , int n )const,意思是从pos处往后查找,从原字符串进行查找字符串s前n个字符,rfind(const char*s , int pos , int n )const,意思是从pos往前查找,从原字符串进行查找字符串s前n个字符
        replace函数replace(int pos , int n , const string &str)(其中string& str 可以换成char* s一个意思)
        该函数功能是把目标字符串从下标pos位置开始,n个字符,替换成字符串str(或s)
例如
        string str = "abcdef" ; str.replace(1,3,"1111");cout<<str<<endl;

        刚开始学的时候确实很琢磨是替换了三个1还是替换了四个1,这个时候记住定义,把原来的字符串从下标pos位置开始,n个字符全部替换成要求的字符串,就是从b开始,bcd全部被替换成了1111,所以Output是a1111ef

四、string 字符串比较(挨个字符的ASCLL码来进行对比)

string 字符串比较(挨个字符的ASCLL码来进行对比)

        compare函数,返回一个整型数值,compare函数是字符串之间进行比较,按字符的ASCLL码来进行挨个比较,int compare(const string &s)const与字符串s进行比较(其中string& s可以换成char* s一个意思)
        如果原字符串与字符串s相等,则返回0
        如果原字符串与字符串s大,则返回1
        如果原字符串与字符串s小,则返回-1
        判断的依据是挨个字符进行ASCLL码来进行比较,若有差异则直接返回

例如
string str1 = "c";string str2 = "aaaaa";cout<<str1.compare(str2)<<endl;
Output是1

五、string 字符存取

string 字符存取

        通过[]来访问或者修改单个字符
string str = "hello"; for(int i = 0 ; i < str.size();i++) cout<<str[i]<<" "; cout<<endl;
str[0] = 'x';cout<<"str = "<<str<<endl;
Output:
h e l l o
xello


        通过at方式来进行单个字符的访问或者修改
string str = "hello";for( int i = 0 ; i < str.size();i++)cout<<str.at(i)<<" ";cout<<endl;
str.at(1) = 'x';cout<<"str = "<<str<<endl;
Output:
h e l l o
hxllo

六、string插入和删除

string插入和删除

        insert函数,来进行插入
        string& insert(int pos,const char*s);在下标为pos处与下标为pos-1处之间,插入字符串(其中char*s 和string& str都是字符串的意思)
例如
string str1 = "abcdefg";str1.insert(2,"haha");cout<<str1<<endl;
Output:
abhahacdefg


        string& insert(int pos , int n , char c);在下标为pos处插入n个字符c

        erase函数,来进行删除
        string& erase(int pos, int n = npos);删除从下标为pos开始的n个字符
例如
string str2 = "abcdefg"; str2.erase(2,2);cout<<str2<<endl;
Output:
abefg

七、string子串

string子串

        string substr(int pos = 0 , int n = npos)const;返回由pos开始的n个字符组成的字符串(包括下标为pos的字符),那么从零开始的话就是截取到下标为n-1的字符
例如(生活实例)
string str = "1308u103@wanfo.com";//假设邮箱
int pos = str.find('@');
string userName = str.substr(0,pos);
cout<<userName<<endl;
Output:
1308u103

八、string长度

string长度

        可以用size()和length()来进行判断长度
        两者在string中没有任何区别
        string str = "abcde";int a = str.size();int b = str.length();结果是a=b
        在正常情况下,一般来说size()一般用作返回容器大小的方法,length()一般用作返回一个序列的长度

  • 15
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想学好cpp的大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值