C++——STL字符串03

本次讲的是字符串的比较,首先来讲一下字符串的比较是怎样的,他是直接比较两个串的各个字符的ASCII码的,知道碰到末尾的‘\0’或者遇见不一样的

这里仅仅是讲string类型的比较,对于常规字符串的比较,里面好像有些猫腻,我日后会在c和c++系列再去探讨,总之C和C++的坑很深

下面回到正题,string类型的比较:

1.通过四则运算符进行比较,返回值就是0或者1,也就是真或者假

#include<string>
#include<iostream>
using namespace std;


int main()
{
    string str("kdjskl");
    cout<<(str<"z")<<endl;//string类型的比较可以是string类型和一个字符串字面值进行比较


    string str1("fnjdk");
    cout<<(str<=str1)<<endl;//也可以是两个string类型进行比较
    //字符串的比较是这个


    string str3("kdjskl");
    cout<<(str3==str)<<endl;//;对于字符串类型,比较两个字符串是否相等时符合我们的思路的
    return 0;
}

2.通过compare函数进行比较

#include<string>
#include<iostream>
using namespace std;


int main()
{
    string str("abc");
    string str1("abd");
    cout<<str.compare(str1)<<endl;//str比str1小就返回-1


    str="abc";
    str1="abc";
    cout<<str.compare(str1)<<endl;//str和str1相等就返回0


    str="abd";
    str1="abc";
    cout<<str.compare(str1)<<endl;//str比str1大就返回1
    return 0;

}


3.皮一下,还是讲一下compare的截断比较用法

#include<string>
#include<iostream>
using namespace std;


int main()
{
    string str("abdef");
    string str1("abc");
    cout<<str.compare(0,2,str1,0,2);//前面两个参数代表截断str的字符串,后面两个参数就是截断str1的字符串,如果捎给参数的话就是从开始到结尾
    return 0;

}

4.拷贝

#include<string>
#include<iostream>
using namespace std;


int main()
{
    string str("gufihufig");
    char a[10]={0};//为什么要这里的初始化呢  自己考虑考虑吧,反正是有用的
    str.copy(a,4,2);
    /*
    copy()函数是讲string类型里面的信息拷贝到外面的一个字符串中
    */
    string str1;
    char *b=new char [10];
    //str.copy(str1,4,2);这样拷贝是不行的
    str.copy(b,4,2);
    //cout<<str1<<endl;
    cout<<b<<endl;
    cout<<a<<endl;
    return 0;

}

5.查找

#include<iostream>
#include<string>
using namespace std;


int main()
{
    string str("fjdskfhdjshf");
    cout<<(int)str.find("fij",0)<<endl;
    /*
    1.为什么要强制类型转换,因为这个函数如果没找到返回的是一
    个无符号整数,不方便查看,转换类型后如果没找到就返回-1,
    找到了就返回相应的下标
    2.里面的字符串可以换成另一个string类型的对象
    3.里面的第二个参数是代表从原始串的拿个下标开始查找
    4.里面的字符串也可以换成一个字符就变成了,查找字符了
    */
    return 0;

}

6.返回子串

#include<iostream>
#include<string>//注意不是包含(strng.h),带了.h的C的标准库
using namespace std;
int main()
{
    string str("fdjhfkd");
    cout<<str.substr(2,3);//第一个参数就是从哪里开始返回,第二个参数是返回字符串的长度
return 0;


}

6.交换

#include<iostream>
#include<string>//注意不是包含(strng.h),带了.h的C的标准库
using namespace std;
int main()
{
    string str("fdjhfkd");
    string str2("dhf");
    str.swap(str2);
    cout<<str<<endl<<str2<<endl;
return 0;


}

7.加法

#include<iostream>
#include<string>//注意不是包含(strng.h),带了.h的C的标准库
using namespace std;
int main()
{
    string str("fdjhfkd");
    string str2("fkd");
    cout<<str+str2<<endl;//就是简单的加起来,也可以是一个字符串字面值和一个string类型进行相加
    //cout<<str-str2<<endl;没有减法啊
return 0;


}


猜你喜欢

转载自blog.csdn.net/qq_40794602/article/details/80211966
今日推荐