本次讲的是字符串的比较,首先来讲一下字符串的比较是怎样的,他是直接比较两个串的各个字符的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;
}