C++ string类字符串的基本用法详解:初始化、拼接、插入、查找、删除、其他常用方法

一、初始化:

    string str;                     //定义一个空的字符串
    char cstr[] = "I have a dream"; //定义一个字符数组
    str = "I have a dream";         //字符串赋值方法1

    string s1 = str;
    string s2 = "I have a dream"; //s1,s2直接赋值,两者的值是一样的

    string s3(str);
    string s4("I have a dream"); //s3,s4调用复制构造函数,两者的值是一样的

    string s5(cstr); //将字符数组作为s5的值

    string s6(4, 'I'); //生成一个字符串“IIII”,包含4个I

    string s7(str, 2); //将str下标从2开始的子串赋值给s7,s7为“have a dream”

    string s8(cstr, 6); //将cstr前6个字符赋值给s8,s9为“I have”

    string s9(str, 2, 5); //将str从下标为2,开始,长度为4的子串赋值给s9,s9为“have”

    string s10(str.begin()+2,str.begin()+6);//将str下标区间为[str.begin()+2,str.begin()+6)的子串赋值给s10

 二、拼接:

    string str1("abcd"),str2("1234");

    str1+=str2;//将str2拼接到str1后面,str1=“abcd1234”

    str1.append(str2);//将str2拼接到str1后面,str1=“abcd1234”
    
    str1.append(str2,1,2);//将str2下标为1至下标为2的字符串,拼接到str1后面,str1=“abcd23”

    str1.append(3,'a');//将3个字符“a”,拼接到str1后面,str1=“abcdaaa”

    str1.push_back('a');//将字符‘a’拼接到str1末尾

三、插入:

    string str = "I have a dream"; 

    str.insert(1,2,'a');//在str中,从下标为1的位置开始,插入2个“a”,str为“Iaa have a dream”

    str.insert(2,"sister ");//在str中,下标为2的位置开始,插入字符串“sister ”,str为“I sister have a dream”
    
    str.insert(2,"abcd",2);//在str中,下标为2的位置开始,插入字符串“abcd”的前两个字符,str为“I abhave a dream”

    str.insert(2,"abcd",1,2);//在str中,下标为2的位置开始,插入字符串“abcd”中从下标为1开始到下标为2结束的字符串,str为“I bchave a dream”

四、查找:

    int position;
    string str = "I have a dream"; 

    position=str.find("ha");//str中“ha”开始出现的位置为2,则position=2
    position=str.find("apple");//str中没有“apple”,则position=-1

    position=str.find_first_of("a");//str中“a”第一次出现的位置,则position=3
    position=str.find_first_of("l");//str中没有“l”,则position=-1

    position=str.find_first_not_of("I ahavez");//返回str中第一个没有出现在“I ahavez”中的字符的位置,此处“d”为第一个没有出现在str,则position=9
    position=str.find_first_not_of("I have a dream");//返回str中第一个没有出现在“I ahavez”中的字符的位置,此处没有这种字符,则position=-1

    position=str.find_last_of("a");//str中“a”最后一次出现的位置,则position=3
    position=str.find_last_of("l");//str中没有“l”,则position=-1

    position=str.find_last_not_of("I ahavez");//返回str中最后一个没有出现在“I ahavez”中的字符的位置,此处“m”为第一个没有出现在str,则position=13
    position=str.find_last_not_of("I have a dream");//返回str中最后一个没有出现在“I have a dream”中的字符的位置,此处没有这种字符,则position=-1

    position=str.find("a",5);//从str中,下标为5的位置开始,向后查找字符串“b”,则position=13

    position=str.rfind("a");//从str中,反向查询,“a”最后出现的位置,则position=12

五、删除:

    string str = "I have a dream";

    str.erase(str.begin()+2);//删除str字符串中指定的字符,str为“I ave a dream”
    
    str.erase(2,4);//删除str中从下标2开始的4个字符,str为“I  a dream”

    str.erase(str.begin()+2,str.end()-8);//删除str下标区间为[str.begin()+2,str.end()-8)的子串

    str.pop_back();//删除str字符串最后一个字符

    str.clear();//将字符串的内容清空,让str成为一个空字符串(长度为0个字符)

六、其他常用方法:

    string str1,str2;
    string str = "I have a dream";

    str1=str.substr(2,5);//获取str字符串从下标位置为2开始到下标位置为5结束的子串,赋值给str1
    str2=str.substr(2);///获取str字符串从下标位置为2开始到m末尾的子串,赋值给str1

    str1="1234";
    str2="abcd";
    int len;

    str1.swap(str2);//交换str1和str2的内容,此时str1="abcd",str2="1234"

    len=str1.length();//输出字符串的长度

    len=str1.size();//输出字符串的长度

    int em=str1.empty();//判断str1是否为空,为空返回1,不为空返回0

    reverse(str2.begin(),str2.end());//将字符串反转,需要头文件<algorithm>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值