学习C++ primer 之路 - ( 第十六章 之String类)

一、String类说明

String类是位于头文件string或者string.h中,String极大的简化了C风格字符串的操作与声明,里面封装集合了多种多样的操作字符串的接口,里面还有许多构造函数,可以接受多种参数来不同的对待,而且还重载了四个基本运算符(+ - * /)。

二、string构造函数及其运算符重载

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个'.'

 等还有很多,请查阅相关资料

猜你喜欢

转载自blog.csdn.net/z1455841095/article/details/82592893