标准库类型:string
string 表示可变长的字符序列
/**
* ---------------------------------------------------------------------------
* 一、定义和初始化string对象:
* 拷贝初始化:使用等号"="初始化一个变量。
* 直接初始化:使用圆括号"()",里面放初始值。
*
* 多值初始化
*/
string s1,s6; // 默认初始化,是一个空字符串
string s2 = "hello"; // 【拷贝初始化】等价于:s2("hello"); s2是该字符串字面值的副本
string s3(s2); // 【直接初始化】等价于:s3 = s2; s3是s2的副本
string s4(10,'c'); // 【直接初始化-多值】s4的内容是 cccccccccc。由连续10个字符c组成的串
string s5 = string(10,'d'); // 【拷贝初始化-多值】显式的创建一个(临时)对象拷贝给s5
/**
* ---------------------------------------------------------------------------
* 二、string对象上的操作:
* 读写string对象:
* os << s -->将s写到输出流os当中,返回os
* is >> s -->从输入流is中读取字符串赋给s,遇到空白停止,返回is
* 读取一整行:getline(is,s)
* getline函数代替原来的 >> 运算符。参数是一个输入流和一个string对象。遇到换行符停止
* 判断s对象是否为空:s.empty()
* 返回一个布尔值。
* 返回s对象的字符长度:s.size() 、s.length()
* 返回一个string::size_type类型的值
* 返回s中第n个字符的引用:v[n]
* 位置下标从0开始
* 比较string对象:比较对象中的字符,依照(大小写敏感的)字典顺序
* ==,!=,>,>=,<,<=
* 比较规则:1、两个string对象中字符相同长度不同,比长度。如"qwerr">"qwer"
* 2、两个string对象某些对应的位置上不一致,则比较第一对相异字符。如"cba"<"ca"
* 拼接string对象:
* 两个string对象相加
* 字面值和string对象相加
*
*/
cin >> s6; // 键盘输入字符赋值给s6
cout << s6 <<endl; // 输出s6对象内容
cout << s1.size() <<endl; // 输出:0
cout << s1.empty() <<endl; // 输出:1,代表true,为空
cout << s2.size() << endl; // 输出:5
cout << s2.length() << endl; // 输出:5
cout << s2.empty() <<endl; // 输出:0,代表false,不为空
cout << s2[2] <<endl; // 输出:l,下标从0开始
cout << (s2 == s3) << endl; // 输出:1,代表true,两个对象相等
cout << (s2 == s4) << endl; // 输出:0,代表false,两个对象不相等
cout << (s4 < s5) << endl; // 输出:1,代表true,s4 小于 s5【比较字符大小】
cout << (s2 + s4) << endl; // 输出:hellocccccccccc
cout << (s2 + " hi") << endl; // 输出:hello hi
/**
* ---------------------------------------------------------------------------
* 三、处理string对象中的字符
* 判断某字符特性,引入cctype头文件
*/
标准库类型:vector(容器)
1、vector表示对象的集合,其中所有对象的类型都相同。但不包含引用(引用不是对象)
2、集合中的每个对象都有一个与之对应的索引(即下标),索引用于访问对象
3、vector是一个类模板。【编译器根据模板创建类或函数的过程称为实例化】
/**
* ---------------------------------------------------------------------------
* 一、定义和初始化vector对象
* 拷贝初始化:使用等号"="初始化一个变量。
* 直接初始化:使用花括号"{}",里面放列表初始值。
* 提供一个类内初始值:
*/
vector<int> v1; //默认初始化,是一个空vector,元素类型是int型
vector<int> v2{1,2,3,4,5,6,7}; //等价于:v2 = {1,2,3,4,5,6,7}; 每个元素被赋予了初始值
vector<int> v3(v2); //等价于:v3 = v2; v3是v2的副本
vector<string> v4(7,"hi"); //等价于:v4 = vector(10,"hi"); 包含了7个重复的元素,每个元素的值都被初始化为"hi"
vector<int> v5(7); //7个元素,每个都初始化为0
/**
* ---------------------------------------------------------------------------
* 二、vector对象上的操作
* 判断v对象是否为空:v.empty()
* 返回一个布尔值
* 返回v中元素的个数:v.size()
* 返回一个vector<int>::size_type类型的值
* 返回v中第n个位子上的元素的引用:v[n]
* 位置下标从0开始
* 比较vector对象:比较对象中的元素值,依照(大小写敏感的)字典顺序
* ==,!=,>,>=,<,<=
*
* 向vector对象中添加元素:v.push_back()
* 把一个值当成vector对象的尾元素压到对象尾端
* 隐含要求:如果循环体内部包含有向vector对象添加元素的语句,则不能使用范围for循环
*
*/
cout << v1.size() <<endl; // 输出:0
cout << v1.empty() <<endl; // 输出:1,代表true,为空
cout << v2.size() << endl; // 输出:7
cout << v2.empty() <<endl; // 输出:0,代表false,不为空
cout << v2[5] <<endl; // 输出:6,下标从0开始
cout << (v2 == v3) << endl; // 输出:1,代表true,两个对象相等
cout << (v2 == v5) << endl; // 输出:0,代表false,两个对象不相等
cout << (v2 < v5) << endl; // 输出:0,代表false,v4 大于 v5【比较元素1值大小】
v2.push_back(8); //v2中添加元素8
for(int &i : v2) //对于v中的每个元素(注意:i是一个引用,i值改变对应容器中元素值改变)
i *= i; //求元素值的平方 【*= 把运算符左右侧对象相乘,结果存入左侧运算对象】
for(int i : v2)
cout<< i<< " "; //输出:1 4 9 16 25 36 49 64