您的位置:首页 > 编程语言 > C语言/C++

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

2020-08-01 17:24 148 查看

一、什么是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#

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: