一、初始化:

    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>

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐