#include<iostream>
using namespace std;
#include<string>
void test01() //字符串的几种常见的查找
{
//string中find()返回值是字母在母串中的位置(下标记录)
string str1 = "abcbc";
int ret=str1.find_first_of("a");//因为返回的是一个下表的记录
//所以第一个位置是从0开始计起的
cout << "首次出现的位置为第" << ret << "个" << endl;
//该函数的功能是用于查找该子串在母串中第一次出现的位置
//(所以传入的参数必须是字符串类型的)
//并且返回的是一个整型的数值
int num = str1.find_last_of("b");
cout << "最后一次出现的位置为第" << num << "个" << endl;
//普通的查找
//当string.find()没有找到时返回的是一个非常大的值,
//可以说是-1,也可以说是一个非常大的值
//这与整数在内存当中的存储有关
//对于查找而言,如果找到了,就返回第一个所在
//的位置,如果找不到,那么就返回-1,所以我们
//可以用-1判断是否找到了,来输出相应的语句
int pos = str1.find("bc");//注意find函数必须要传入一个字符串
if (pos == -1)
{
cout << "没有找到" << endl;
}
else
{
cout << "找到了" << endl;
}
//查找给定位置后的某个字符串的位置
int position = str1.find("c", 5);
cout << position << endl;//这一串代码是找不到的,
//所以该find函数返回一个-1,所以position的值为-1
//反向查找子串在母串中出现的位置,
//通常我们可以这样来使用,
//当正向查找与反向查找得到的位置不相同说明子串不唯一。
int count = str1.rfind("a");//传入一个子串进去,
//反向查找该子串在字符串中出现的位置
cout << "反向查找的位置为" << count << endl;
}
void test02()//替换
{
//字符串的替换 用replace函数来替换
string str1 = "abcde";
str1.replace(0, 3, "1111");
//对于替换的函数时从第一个参数的位置起,
//替换掉第三个参数的长度,第三个参数就是你即将
//替换的字符串,(不用管长度是否一一对应
//只要替换就可以了
//注意第三个参数一定要是字符串,因为原数据的类型就是string类型的
cout << "str1=" << str1 << endl;
//在c++中可以直接打印出字符串的类别
}
int main(void)
{
test01();
test02();
system("pause");
//system("PAUSE")和system("pause")作用和效果一样,因为dos命令是不区分大小写的。
//该语句是暂停的意思:等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果
return 0;//程序正常运行返回一个0
}