C++ 标准模板库STL(二)—— string容器

一、什么是string

string是一个类,类似于java中的String类。利用string类可以定义其对应的string对象

注意:

  • 要使用string类要引入库
  • string首字母s就是小写,不要大写,和java不一样

二、如何定义string对象

string str;

三、初始化string对象

(一)在定义的时候就初始化

string str = "I love China";

(二)定义完后初始化

string str;
str = "I love China";

注意:如果字符串只是声明了没有初始化,则默认值是"";

四、给string对象赋值

(一)用字符串常量给string对象赋值

string str;
str = "I love China";

(二)用一个string对象给另一个对象string对象赋值

string str1, str2;
str1 = "I love China";
str2 = str1;

(三)用字符数组给string对象赋值

char arr[] = "I love China";
string str;
str = arr;

(四)调用assign方法进行赋值

1、用一个string对象给另一个string对象赋值
(1)函数原型
string& assign(const String &s);
(2)示例
string str1, str2;
str1 = "I love China";
str2.assign(str1);
2、用一个字符数组给string对象赋值
(1)函数原型
string& assign(const char *);
(2)示例
string str;
strs.assign("I love China");
3、用一个字符数组的前n项给string对象赋值
(1)函数原型
string& assign(const char *, int n);
(2)示例
string str1, str2;
str1 = "I love China";
str2.assign(str1, 6);
I love
4、用n个字符给string对象赋值
(1)函数原型
string& assign(int n, char c);
(2)示例
string str;
str.assign(6,'6');

五、string对象的拼接

(一)利用”+“进行拼接

1、拼接一个字符数组
string str = "I";
str += " love China";
2、拼接一个字符
string str = "I";
str += 'm';
3、拼接一个string对象
string str1 = "I", str2 = " love China";
str1 += str2;

(二)利用append方法进行拼接

1、拼接一个string对象
(1)函数原型
basic_string &append( const basic_string &str );
(2)示例
string str1 = "I", str2 = " love China";
str1.append(str2);
2、拼接另一个string对象某个一部分字符
(1)函数原型
basic_string &append( const basic_string &str, size_type index, size_type len );
(2)示例
string str1 = "I", str2 = " love China";
str1.append(str2, 5, 6);
3、拼接一个字符数组
(1)函数原型
basic_string &append( const char *str );
(2)示例
string str1 = "I";
str1.append(" love China");
4、拼接一个字符数组的前n项
(1)函数原型
 basic_string &append( const char *str, size_type num );
(2)示例
string str1 = "I";
str1.append(" love China", 5);

六、字符串的查找

(一)返回str在字符串中第一次出现的位置(从index开始查找)*。*如果没找到则返回string::npos

1、函数原型

size_type find( const basic_string &str, size_type index );
size_type find( const char *str, size_type index );

注意:index可缺省,缺省默认从0开始找

2、示例

string str1 = "I love China";
int pos;
pos = str1.find("love China");
cout << pos <<endl;

(二)返回str在字符串中第一次出现的位置(从index开始查找,长度为length)。如果没找到就返回string::npos

1、函数原型

size_type find( const char *str, size_type index, size_type length );

注意:index可缺省,缺省默认从0开始找

2、示例


(三)返回字符ch在字符串中第一次出现的位置(从index开始查找)。如果没找到就返回string::npos

注意:index可缺省,缺省默认从0开始找

1、函数原型

 size_type find( char ch, size_type index );

2、示例


七、字符串的替换

(一)将本字符串中,从index开始的num个字符用字符串str替换

1、函数原型
basic_string &replace( size_type index, size_type num, const basic_string &str );
2、示例
string str1 = "I love China, wwwww", str2 = "ChengDu";
str1.replace(7,5,str2);
cout << str1 <<endl;
I love ChengDu, wwwww

八、string对象的比较

(一)比较方式

按照字符的ASCII码进行比较,默认从两个字符串的0下标开始,逐个比较

(二)比较结果

1、如果第一个字符串小于第二个字符串,返回:-1

2、如果两个字符串相等,返回:0

3、如果第一个字符串大于第二个字符串,返回:1

(三)将两个字符串的所有字符进行比较

1、函数原型
int compare( const basic_string &str );
int compare( const char *str );
2、示例
string str1 = "I love China, wwwww", str2 = "I love Chengdu";
int res = str1.compare(str2);
cout << res <<endl;
1

九、字符串中字符的访问

(一)访问

1、通过"[]"进行访问
string str = "I love China, wwwww";
cout << str[7] <<endl;
C
2、通过at方法进行访问
string str = "I love China, wwwww";
cout << str.at(7) <<endl;
C

(二)修改

1、通过"[]"进行修改
string str = "I love China, wwwww";
str[0] = 'i';
cout << str <<endl;
i love China, wwwww
2、通过at方法进行修改
string str = "I love China, wwwww";
str.at(0) = 'i';
cout << str <<endl;
i love China, wwwww

十、string对象插入和删除字符、字符串

(一)插入

1、插入字符串
(1)函数原型
basic_string &insert( size_type index, const basic_string &str );
basic_string &insert( size_type index, const char *str );
(2)示例
string str = "I love China";
str.insert(2, "do ");
cout << str <<endl;
I do love China
2、在指定的位置插入n个字符ch
(1)函数原型
basic_string &insert( size_type index, size_type num, char ch );
(2)示例
string str = "I love China";
str.insert(2, 3, 'd');
cout << str <<endl;
I dddlove China

(二)删除

1、删除从index索引开始的num个字符, 返回*this.
(1)函数原型
basic_string &erase( size_type index = 0, size_type num = npos );
(2)示例
string str = "I love China";
str.erase(2, 5);
cout << str <<endl;
I China
2、删除pos指向的字符, 返回指向下一个字符的迭代器
(1)函数原型
iterator erase( iterator pos );
(2)示例
3、删除从start到end的所有字符, 返回一个迭代器,指向被删除的最后一个字符的下一个位置
(1)函数原型
 iterator erase( iterator start, iterator end );
(2)示例

十一、获取string对象子串

返回从index开始的num个字符组成的字符串

(一)函数原型

basic_string substr( size_type index, size_type num = npos );

(二)示例

string str = "I love China";
string sub = str.substr(7, 5);
cout << sub <<endl;
China

注意:如果num没有指定,则默认返回从index开始到字符串结尾的所有字符组成的字符串(不包含结束符)

参考资料

http://www.shouce.ren/api/c/index.htm#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值