本文摘自网络,作者php是最好的语言,侵删。
第二章介绍内置类型,本章介绍抽象数据类型库。
- 其中string和vector是两种最重要的标准库类型,前者支持可变长字符串,后者表示可变长的集合。
- 还有一种标准库类型是迭代器,它是string和vector的配套类型,常被用于访问string中的字符和vector中的元素。
第三章 字符串、向量和数组
头文件不应包含using声明。
标准库类型string
1 |
|
初始化string
直接初始化(direct initialization)
拷贝初始化(copy initialization):使用等号
1
string s
1
;string s
2
(s
1
);string s
2
= s
2
;string s
3
(
"hiya"
);string s
3
=
"hiya"
;string s
4
(
10
,
'c'
); //s
4
的内容是cccccccccc
string对象上的操作
1
2
1
. cout << s
2
. cin >> s //将string对象读入s,遇到空白停止
3
. getline(is, s) //从输入流is中读取一行赋给s(换行符被读取了,但被丢弃而没有赋给s),返回is
4
. s.empty() //s为空返回true,否则返回false
5
. s.size()
6
. s[n] //返回s中第n个字符的引用,位置n从
0
计起
7
. s
1
+ s
2
//返回s
1
和s
2
连接后的结果
8
. s
1
= s
29
. s
1
== s
210
. s
1
!= s
211
. <, <=, >, >=
逻辑非运算符(!)
string::size_type类型:s.size()的返回值类型,是string类的配套类型。它是一个无符号类型的值,能够存放下任何string对象的大小。
处理string对象中的字符
cctype头文件:对单个字符的判断或处理的函数
1
isupper(c) //c是大写字母时为真islower(c)tolower(c) //如果c是大写字母,则输出对于的小写字母;否则原样输出toupper(c)isalpha(c) //c是字母时为真isdigit(c) //c是数字时为真isalnum(c) //c是字母或数字时为真ispunct(c) //c是标点符号时为真isspace(c) //c是空白时为真(即c是空格、横向制表符、纵向制表符、回车符、换行符、进纸符的一种)iscntrl(c) //c是控制字符时为真isgraph(c) //c不是空格但可打印时为真isprint(c) //c是可打印字符时为真(即c是空格或具有可视形式)isxdigit(c) //十六进制数
使用C++版本的C标准库头文件,形如name.h,C++++中这些文件命名为cname,内容一样,且头文件cname中定义的名字从属于命名空间std。
范围for(range for)语句
1 2 3 4 |
|
标准库类型vector
vector是一个类模板(class template)。vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。vector也常被称为容器(container).
定义和初始化vector对象
1 |
|
列表初始化vector对象
1 |
|
向vector对象中添加元素
运行时才知道vector对象中确切的个数:
1
2
3
string word;vector<string> text;while (cin >> word) {
text.push_back(word);
}
vector对象能高效增长:vector能在运行时高效快速地添加元素。
如果循环体内包含有向vector对象添加元素的语句,则不能使用++范围for++循环。
push_back:把一个值当成vector对象的尾元素“压到(push)”vector对象的“尾端(back)”。
1
2
vector<int> v
2
;for(int i=
0
; i !=
100
; ++
1
)
v
2
.push_back(i);
其他vector操作
1 2 3 4 5 |
|
迭代器iterator
一种通用机制:实现使用下标运算符访问string对象的字符或vector对象的元素。
类似指针类型,提供了对对象的间接访问。
begin和end成员
1
//由编译器决定b、e的类型//b表示v的第一个元素,e表示v尾元素的下一个元素
auto
b = v.begin(), e = v.end(); //b、e类型相同
end成员返回的迭代器常被称作尾后迭代器(off-the-end iterator),或者简称尾迭代器。
如果容器为空,则begin和end返回的都是尾后迭代器。
标准容器迭代器运算符
1 |
|
1 2 3 4 |
|
#### 迭代器类型
拥有迭代器的标准库使用iterator和const_iterator来表示迭代器的类型:
1 |
|
参考:C++Primer第五版
第二章介绍内置类型,本章介绍抽象数据类型库。
- 其中string和vector是两种最重要的标准库类型,前者支持可变长字符串,后者表示可变长的集合。
- 还有一种标准库类型是迭代器,它是string和vector的配套类型,常被用于访问string中的字符和vector中的元素。
相关文章:
第一章C++:函数返回值、GNU编译器命令
第二章C++:变量和基本类型
以上就是第三章C++:字符串string、向量vector和数组的详细内容!
相关阅读 >>
更多相关阅读请进入《C++》频道 >>