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开始到字符串结尾的所有字符组成的字符串(不包含结束符)
参考资料
相关文章推荐
- C++--STL-string容器的使用,学习代码
- C++:STL容器中,string操作
- C++之标准模板库STL续(容器,算法)
- [转]C++ STL基本容器string,vector,list,deque,map
- C++标准模板库(STL)常用容器
- C++ 标准模板库(STL)——迭代器、迭代器类型以及序列式,关联容器迭代器失效问题(iterator)
- 【C】C++标准模板库(STL)介绍--string
- C++ 标准模板库(STL)_有序关联容器—— map + multimap(侯捷老师)
- C++ 提高3 STL基本概念 string 迭代器 容器
- C++ 标准模板库(STL)_有序关联容器—— set +multiset(迭代器失效问题)(侯捷老师)
- C++ 标准模板库(STL)_序列式容器—— deque(模拟连续空间)(侯捷老师)
- C++学习笔记(六):复杂数据类型(string、容器和STL)
- C++ 标准模板库(STL)_序列式容器——Vector以及扩容操作(侯捷老师)
- c++STL容器之string容器
- C++ 标准模板库(STL)_序列式容器—— List容器(侯捷老师)
- 【C++的探索路20】标准模板库STL之STL的基本概念与容器
- C++STL中string容器的相关知识
- C++标准模板库STL:容器
- C++ STL基本容器string,vector,list,deque,map..[转]
- C++ STL 标准模板库的学习 (一) 有关容器,算法,迭代器的基本认识 20180319 day10