#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
}