stl(4)string容器2

1.使用compare进行string的比较,规则是:每个字符依次比较ASCII码大小,一有大于或者小于就返回,相等则继续比较下一个字符

(1)string对象str与string对象str1进行比较,大于返回1,等于返回0,小于返回-1

string str = "hello";

string str1 = "hello";

int rel = str.compare(str1);

(2)string对象str与字符串“hello”进行比较,大于返回1,等于返回0,小于返回-1

string str = "hello";

int rel = str.compare("hello");

 

2.使用substr对string对象取子字符串

(1)对string对象str从第n个字符开始,取m个字符作为子字符串返回

string str = "hello world";

int n =2;

int m =3;

string str1 = str.substr(n,m);

 

3.使用insert在string对象中插入字符串

(1)在string对象str中的第n个位置插入另一个string对象str1

string str = "hello";

string str1 = "aa";

int n =1;

str.insert(n,str1);

(2)在string对象str中的第n个位置插入字符串“aa”

string str = "hello";

int n =1;

str.insert(n,"aa");

(3)在string对象str中的第n个位置插入m个相同字符c

string str = "hello";

int n =1;

char c = 'a';

int m =2;

str.insert(n,m,c);

 

4.使用erase从string对象指定位置删除字符

(1)在string对象str中,删除从n开始的m个字符

string str = "hello";

int n =1;

int m =2;

str.erase(n,m);

 

5.string和const char*之间的转换

(1)string转为char*

string str = "hello";

const char* ch = str.c_str();

(2)char*转为string

const char* s = "hello";

string str(s);

 

tips1.在c++中存在存在const char*到string的隐式转换,比如const char* s = "hello";string str = s;,这段代码是不会报错的。

但是不存在string到const char*的隐式转换,比如string str = "hello";const char* s = str;,这段代码会报错。这里就必须使用const char* s = str.c_str();

 

tips2.在用[]和at访问string对象里面的单个字符的时候,如果string对象的地址被重新分配后,原始用at和[]取的地址可能会失效报错。(但是下面的代码我没有报错,所以只是可能😄)

string str = "hello";

char a = str[0];

char b = str[1];

str = "hello world";

a = '1';

b = '2';

posted @ 2021-01-02 15:18  maycpou  阅读(80)  评论(0)    收藏  举报