string类的构造函数共6个:
size_type-依赖于实现的整型
n_pos-字符串的最大长度
NBTS-(null-byte-terminated string)表示以空字符结束的字符串-传统的C-风格字符串
1>string(const char *s): //将string对象初始化为C—风格字符串
例:string one("First constructor!"); //one="First constructor!"
2>string(size_type n,char c) //创建一个包含n个元素的string对象,其中每个元素都被初始化为字符c
例:string two(20,'$') ; //two="$$$$$$$$$$$$$$$$$$$$"
3>string(const string &str,string size_type n=npos) //将string对象初始化为对象str中从位置pos开始到结尾的字符,或从位置pos开始的n个字符
例:string three(one,2); //将three初始化为:one从下标为2的字符到末尾的字符串three="rst constructor!"
F i r s t constructor!
0 1 2 3 4 5...
例:string three(one,2,3); //three="rst"
4>string() //string的默认构造函数
5>string(const char *s,size_type n) //将string对象初始化为s指向的NBTS中的前n个字符,即使超过了NBTS结尾
例:char str[]="How are you?"
string five(str,5); //five="How a",初始化为字符数组的前5个 字符
例:string five(str,15); //15>12(strlen(str)), five="How are you?###",补齐到15个
6>template<class Iter> string(Iter begin,Iter end) //将string对象初始化为区间[begin,end)内的字符
例: string six(str+2,str+5); //six="w a",不包括str+5
例: string six(five+1,five+3) //Error!对象名和数组名不同,不能被看作地址-------------------------------------
stirng six(&five[1],&five[3]) //Right