string类的构造函数:
size_type是一个依赖于实现的整形在头文件string中定义的.string类将string::npos定义为字符串的最大长度,通常为unsigned int的最大值.NBTS(null-terminated-string)来表示空字符结束的字符串.
第五个构造函数将一个C-风格字符串和一个整数作为参数,其中的整数参数来表示要复制多少个字符串(如果20被改成40则将会继续复制字符串..将导致十五个无用的字符串被复制到five的结尾处):
第六个构造函数有一个模板参数:
begin和end想指针那样指向内存中的两个位置,构造函数将使用begin和end之间的值对string对象初始化.
在这里数组名相当于指针,所以alls+6和alls+10的类型都是char,因此类型char将替换Iter.第一个参数指向数组(从零开始)alls中的第六个字符串(w),第二个参数指向alls的第十个(well后面的空格);
现在假设要用该构造函数将对象初始化为另一个string对象(假设为five)的一部分内容,则下面这句不管用:
原因在于对象名并不是数组名,所以five不是个指针,但five[6]是一个char值,&five[6]则是个地址,因此可以被用作该构造函数的一个参数:
第七个构造函数将一个string对象的部分复制到构造的对象中:
C++11新增的构造函数:
构造函数string(string && str)类似于复制构造函数,导致新的string为str的副本,但跟复制构造函数不一样的是,他不保证将str视为const.这种构造函数被称为移动构造函数(move constructor).
构造函数string(initialzer_list)使得下面的声明是合法的:
string类输入:
对于string有两种输入方式:
虽然string的getline能自动调节大小,但是有一些限制,如过想要读取一个文本,那么string对象所允许的最大长度(大小为unsigned int的值)可能不够.
string的getlin从输入中读取字符串并将其储存到目标string中,直到发生下面三种情况之一:
- 到达文件尾.
- 遇到分界字符(如 \n)
- 读取的字符数达到最大值;
使用字符串
可以比较字符串.string类对于全部六个关系运算符都进行了重载.如果在机器排列序列中,一个对象位于另一个对象的前面,则前者小于后者.如果机器排列序列为ASCII码,则数字江小鱼大写字符,大写字符小于小写字符.
可以以多种方式在字符串中搜索给定的字符串或字符.重载的find方法:
除此之外还有:
- rfind()方法查找子字符串或字符串最后一次出现的位置;
- find_first_of()方法在字符串中查找参数中任何一个字符串首次出现的位置;
- find_last_of()方法用法相同,查找的是最后一次出现的位置
- find_first_not_of()方法在字符串中查找第一个不包含在参数中的字符串