一、String类说明
String类是位于头文件string或者string.h中,String极大的简化了C风格字符串的操作与声明,里面封装集合了多种多样的操作字符串的接口,里面还有许多构造函数,可以接受多种参数来不同的对待,而且还重载了四个基本运算符(+ - * /)。
二、string构造函数及其运算符重载
构造函数 | 描述 |
string(const char * s) | 将string对象初始化为s指向的NBTS |
string(size_type n,char c) | 创建一个包含n个元素的string对象,其中每个元素都被初始化为字符c |
string() | 创建一个默认的string对象,长度为0(默认构造函数) |
string(const string & str) | 将一个string对象初始化为string对象str(复制构造函数) |
string(const char * s,size_type n) | 将string对象初始化为s指向的NBTS的前n个字符,及时超过NBTS结尾 |
template<class Iter> string(Iter begin,Iter end) | 将string对象初始化为区间[begin,end)内的字符,其中begin和end的行为就像指针,用于指定位置,范围包括begin在内,但不包括end |
string(const string & str,string size_type pos = 0,size_type n = npos) | j将一个string对象初始化为对象str中从位置pos开始到结尾的字符,或从位置pos开始的n个字符 |
string(string && str)noexcept | 这是C++11新增的,他将一个string对象初始化为string对象str,并可能修改str(移动构造函数) |
string(initalizer_list<char>il) | 这是C++11新增的,他将一个string对象初始化为初始化列表il中的字符 |
String类还重载了运算符[ ]
例如:
string str1("xiaoqingwa");
cout << str1[0] << endl; //打印str1字符串第1个字符
还有其他运算符重载例如(伪代码):
string str1("c++");
string str2("java");
string str3("javascript");
if(str1 > str2)
...
else if(str2 == str3)
...
else if(str1 < str3)
...
else if(str3 != str1)
...
等...
三、String方法接口操作
1.输入输出流方法
string特有一个重载<<的方法,还有接收字符串输入的方法:
getline(cin,str1); //接收字符串输入并且存入str1 string对象中
另一个版本(三个参数):
getline(cin,str1,':'); //把参数1所表示字符串按参数3分隔,第一次遇到参数3之前的部分存到参数2
2.字符串操作方法
str1.length() //获取str1的字符串长度
str1.size() //获取str1的字符串长度 上面的length是早期就有 size用来和STL模板兼容
str1.capacity() //获取str1分配的内存块大小
str2.reserve() //请求内存块最小长度
str1.append(str2) //str1后面追加str2字符串
str1.append(str3,7,11) //str1后面添加str3字符串的某一段子串:
str1.append(5,'.') //str1后面添加5个'.'
等还有很多,请查阅相关资料