标准库string
-
表示可变长字符序列,定义在命名空间std中。
①string对象与字符字面值或字符串字面值混在一条语句中使用,须确保每个加法运算符两侧至少有一个运算对象是string。
②初始化=运算符执行拷贝初始化,其他执行直接初始化,所能执行操作如下:
os<<s;将s写到输出流os当中,返回os is>>s;从is中读取字符串赋给s,字符串以空白分隔,返回is getline(is, s);从is中读取一行赋给s,返回is s.empty();s为空返回true,否则返回false s.size();返回s中字符的个数 s[n];返回s中第n个字符的引用,位置n从0计起 s1+s2;返回s1和s2连接后的结果 s1 = s2;用s2的副本代替s1中原来的字符 s1 == s2;判断相等,大小写敏感 s1 != s2; 注:<, <=, >, >=,字符在字典中的顺序比较,大小写敏感
- 标准库函数可执行操作:
isalnum(c);c是字母或数字时为真 isalpha(c);c是字母时为真 iscntrl(c);c是控制字符时为真 isdigit(c);c是数字时为真 isgraph(c);c不是空格但可打印时为真 islower(c);c是小写字母时为真 isprint(c);c是可打印字符时为真(空格或可视形式) ispunct(c);c是标点符号时为真 isspace(c);c是空白时为真 isupper(c);c是大写字母时为真 isxdigit(c);c是十六进制数字时为真 tolower(c);c输出小写字母 toupper(c);c输出大写字母
C风格字符串
- 可执行操作,传入参数必须以空字符结束:
strlen(p);返回p的长度,空字符不计算在内 strcmp(p1, p2);比较p1和p2的相等性,遇空字符结束 strcat(p1, p2);将P2附加到p1并返回p1,去掉p1空字符附加p2再加上空字符 strcpy(p1, p2);将p2拷贝到p1返回p1
-
大多数情况下,使用标准库string比使用C风格字符串更安全、高效。
①C风格字符串初始化string对象会去掉空字符。
②string对象的c_str()函数返回常量字符指针,指向以空字符结束的C风格字符串。
标准库vector
-
标准库类型vector表示对象的集合,称为容器。
①圆括号( )使用提供的值构造vector对象,花括号{ }使用提供的值列表初始化。
②如果使用{ }但提供的值不能用来列表初始化,则考虑用提供的值构造vector对象。
- 除了push_back操作,vector其他操作与string相关操作类似。
- 只能对确知已存在的元素执行下标操作。
迭代器
- begin成员返回指向第一个元素的迭代器,end成员返回尾元素的下一个位置,如果容器为空,两成员返回同一个尾后迭代器。
*iter;返回迭代器iter所指元素的引用 iter->mem;解引用iter并获取该元素的mem成员,等价于(*iter).mem ++iter;令iter指向容器中下一个元素 --iter;令iter指向容器中上一个元素 iter1 == iter2;两迭代器是否相等 iter1 != iter2
- C++语言定义箭头运算符->结合解引用和成员访问两个操作。
- 迭代器类型iterator和const_iterator,begin和end返回类型由对象是否是常量决定,cbgein和cend返回值都是const_iterator。
- push_back等动态增长容器内容,不可在范围for循环中使用,会使迭代器失效。
数组
-
数组也是存放类型相同对象的容器,通过所在位置访问。
①数组大小固定,维度必须是常量表达式,下标索引值是无符号类型。
②大多数表达式中,数组名会转换为指向数组首元素的指针。
③数组不可初始化或赋值为另一个数组。
④字符串字面值初始化数组时结尾处有一个空字符。
- 数组的数组,即数组的元素也是数组。
-
标准库函数begin和end:
①int ia[10]; begin(ia)和end(ia)返回首元素指针和尾后指针。
- 不存在引用的数组,但存在数组的引用。
int (*parray)[10]; //parray指向含有10个整数的数组 int (&arrRef)[10]; // arrRef引用含有10个整数的数组