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';

浙公网安备 33010602011771号