stl(3)string容器1

在C语言里面,字符串用char*来声明。在c++中定义了string类,包含在头文件<string>中。

string中封装了char*,是一个char*的容器,并且提供了很多实用的成员方法。

使用string的时候不用像char*需要考虑内存的释放和越界,这些都由string类内部进行管理。

1.创建string对象

(1)创建一个空字符串

string str;

(2)使用一个字符串初始化string

string str("test");

(3)使用一个string对象初始化另一个对象

string str("test");

string str1(str);

(4)使用n个相同字符初始化string对象

string str(10,'a');

2.使用‘=’对string进行赋值操作

(1)使用字符串对string对象进行赋值

string str = "test";

(2)将一个string对象赋值给另一个string对象

string str ="test";

string str1 = str;

(3)将一个字符赋值给string对象

string str = 'a';

3.使用assign对string对象进行赋值操作

(1)使用字符串对string对象进行赋值

string str;str.assign("test");

(2)用字符串的前n个字符对string对象进行赋值

string str;str.assign("test",2);

(3)将一个string对象赋值给另一个string对象

string str;

string str1 = "test";

str.assign(str1);

(4)使用n个相同的字符对string对象进行赋值

string str;str.assign(10,'a');

(5)截取一个string对象的从第n个字符开始(n从0开始),取m个字符赋值给另一个string对象

string str = "woshidashab";

string str1;

str1.assign(str,0,5);//从str的第0个字符开始取5个字符赋值给str1

4.使用[]访问string对象中的指定字符

string str = "test";

for(int i = 0;i<str.size();i++){

std::cout<<str[i]<<std::endl;

}

4.使用at访问string对象中的指定字符

string str = "test";

for(int i = 0;i<str.size();i++){

std::cout<<str.at(i)<<std::endl;

}

5.使用[]和at访问string对象中的字符的区别

使用[]访问时如果越界程序会直接挂掉,使用try{}catch{]不能捕获到异常

使用[]访问时如果越界程序会抛出一个out_of_ranged的异常,使用try{}catch{]可以捕获到该异常

6.使用‘+=’进行字符串的拼接

(1)拼接一个string对象

string str="hello ";

string str1="world!";

str+=str1;

(2)拼接一个字符串

string str="hello ";

str+=“world!”;

(3)拼接一个字符

string str = "this is ";

str +='a';

7.使用append进行字符串的拼接

(1)拼接一个字符串

string str = "hello ";

str.append("world");

(2)取字符串的前n个字符拼接到原字符串后面

string str = "hello ";

str.append("world",5);

(3)拼接一个string对象

string str = "hello ";

string str1 = "world";

str.append(str1);

(4)将一个string对象从n开始取m个字符拼接到原字符串的后面

string str = "hello ";

string str1 = "world";

int n = 0;

int m = 5;

str.append(str1,n,m);

(5)拼接n个相同的字符c

string str = "test";

int n = 5;

char c = 'a';

str.append(n,c);

8.使用find进行字符串的查找,如果找到指定字符串则返回该字符串第一次出现的位置,找不到返回-1

(1)在string对象str中,从第n个字符开始查找,查找第一次出现string对象str1的位置

string str = "this is a test";

string str1 = "is";

int n =0;

int pos = str.find(str1,n);//n可以不传,不传的话默认是0

(2)在string对象str中,从第n个字符开始查找,查找第一次出现字符串“is”的位置

string str = "this is a test";

int n =0;

int pos = str.find("is",n);

(3)在string对象str中,从第n个字符开始查找,查找字符串“isaa”的前2个字符第一次出现的位置

string str = "this is a test";

int n =0;

int pos = str.find("isaa",n,2);

(4)在string对象str中,从第n个字符开始查找,查找字符c第一次出现的位置

string str = "this is a test";

char c = 'h';

int n =0;

int pos = str.find(c,n);

8.使用rfind进行字符串的查找,如果找到指定字符串则返回该字符串最后一次出现的位置,找不到返回-1

(1)在string对象str中,从第n个字符开始查找,查找最后一次出现string对象str1的位置

string str = "this is a test";

string str1 = "is";

int n =0;

int pos = str.rfind(str1,n);//n可以不传,不传的话默认是0

(2)在string对象str中,从第n个字符开始查找,查找最后一次出现字符串“is”的位置

string str = "this is a test";

int n =0;

int pos = str.rfind("is",n);

(3)在string对象str中,从第n个字符开始查找,查找字符串“isaa”的前2个字符最后一次出现的位置

string str = "this is a test";

int n =0;

int pos = str.rfind("isaa",n,2);

(4)在string对象str中,从第n个字符开始查找,查找字符c最后一次出现的位置

string str = "this is a test";

char c = 'h';

int n =0;

int pos = str.rfind(c,n);

9.使用replace进行字符串的替换

(1)在string对象str中,将从n开始的m个字符替换为string对象str1

string str = "this is a test";

string str1 = "aa";

int n = 0;

int m = 2;

str.replace(n,m,str1);

(2)在string对象str中,将从n开始的m个字符替换为字符串“aa”

string str = "this is a test";

int n = 0;

int m = 2;

str.replace(n,m,"aa");

原文地址:https://www.cnblogs.com/maycpou/p/14208560.html