-
头文件不应包含using声明
-
初始化string对象:
string s1; // 默认初始化,s1是空串 string s2(s1); // s2是s1的副本,直接初始化 string s2 = s1; // 同上,拷贝初始化 string s3("value"); // s3是字面值"value"的副本,除了字面值最后的 '\0'外 string s3 = "value"; // 同上 string s4(n, 'c'); // 把s4初始化为连续 n 个字符 'c' 组成的字符串,直接初始化
<span style="color: rgb(64, 70, 76); font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, STHeiti, 'Microsoft Yahei', sans-serif; font-size: 14px; line-height: 22.399999618530273px; background-color: rgb(253, 254, 249);">读取未知数量的string对象</span><pre name="code" class="cpp"><pre name="code" class="cpp">#include <iostream> #include <string> using std::cin; using std::cout; using std::endl;; using std::string;<pre name="code" class="cpp"> int main() { string str; // 逐个读取单词,直到文件末尾 while (cin >> str) { // 逐行读取,保留输入的空格:while (getline(str)) cout << str << endl; } return 0; }
-
"string".size()的返回值是string::size_type类型
-
字符串字面值与string不是同种类型
-
range for,c++11的语句,其语句体内不应该改变其遍历序列(string, vector, iterator等)的大小
#include <iostream> #include <string> using std::cin; using std::cout; using std::endl; using std::string; int main() { string str = "asdfg"; for (char c : str) { cout << c << endl; } return 0; }
-
下标运算符 [],接收的是string::size_type类型参数,返回值是该位置上的字符的引用。不可以使用[]越界访问
-
vector对象的初始化:
vector<T> v1; // 默认初始化,v1是一个空的vector,它潜在的元素是T类型的 vector<T> v2 {t1, t2}; // v2包含了初始值个数的元素,每个元素被赋予相应的初始值 vector<T> v2 = {t1, t2}; // 同上 vector<T> v3 = (n); // v3包含了n个重复地执行了值初始化的对象 // 余下的方式与string的初始化方式类似
-
vector、string对象的下标运算符可用于访问已存在的元素,而不能用于添加元素
-
迭代器
- 运算符与指针相似(解引用、迭代器的移动等)
- 如果容器为空,则begin和end返回的都是尾后迭代器
- 因为尾后迭代器实际上不是指向某个元素,所以不能对其进行操作
- 指针也是迭代器
-
箭头运算符:把解引用和成员访问两个操作结合在一起,如 it->mem等价于(*it).mem
C++primer第五版第三章学习笔记
最新推荐文章于 2021-08-25 04:29:11 发布