标准库类型string和vector

2023-11-02

一、命名空间

	std::cin

std就是命名空间,
这个的含义是 :编译器应该从操作符左侧的名字所示的作用域std中去寻找cin

另一种方式就是在开头显式进行说明:

using std::cin;

这样一来后续就不用再去在每条语句中显式说明了。

需要注意的是,一般在头文件中不要包含命名空间的声明,这种声明会拷贝到所有引用此头文件的文件中去,可能会导致一些不可预料的错误和冲突

二、string类型

string类型:可变长字符串;

存在于头文件:#include中,而且定义于std命名空间中。

2.1 初始化string对象

在这里插入图片描述
其实这些初始化方式主要可以分为两类:
(1)拷贝初始化
使用了一个变量去初始化了另一个变量,被初始化变量是其他变量的副本

表征的话有“=”号的都是拷贝初始化

比如:

string s2 = s1
string s3 = "value"

(2)直接初始化
直接将初始值拷贝到变量中去

比如:

string s3("value")
string s4(n, 'c')

2.2 string对象的操作

在这里插入图片描述
总共来说有这些操作,分为以下几类

2.2.1 读写操作

(1)采用数据流iostream来对string进行读写

比如:

string s1, s2;
cin>>s1>>s2;
cout<<s1<<s2<<endl;

其中cin在读取时会忽略开头的空白(空格、制表符、换行符等),在遇到下一个空白时停止,算一个string变量

(2)读取任意数量的string

string类型结束时会有一个结束符在,因此可以一直循环,直到检测到结束符为止:

string s1;
while(cin>>s1){
	cout<<s1<<endl;
}

也可以使用getline按行去读入,直到文件末尾结束。getline在进行文件读写时使用较多,主要因为这样可以保留每一行中的空白字符:

string s1;
while(getline(s, s1)){
	cout<<s1<<endl;
}

2.2.2 获取大小

使用size()函数可以返回字符串中的字符数量,使用字符数量可以分段对于字符串进行操作

此处需要注意的是size函数的返回值类型

这个地方的返回值并不是简单的int,而是string::size_type类型,这种类型的细节不需要关注,需要注意的是它是无符号的

这样一来就得避免和有符号数去混用,比如一个负数n: 判断:s.size() < n,无符号数和负数n比较几乎都是true,导致错误

同时也经常使用empty()函数来判断字符串是否为空,当字符串为空时返回true,反之false。

2.2.3 其他string对象操作

(1)比较string对象
对于两个string对象的比较可以直接采用“==”、“>”、“<“、”<=“、”>="运算符进行比较。

==会依次比较string中的每一个字符,如果长度且字符相同则返回true

比较大小主要依次比较的是字母之间的相对顺序
(2)string对象相加

string对象之间相加可以直接使用”+“号

string s1 = "hello, ", s2 = "world";
string s3 = s1 + s2;	//s3(hello, world)

而且string对象也可以直接和字面值进行相加,比如:

string s1 = "hello";
string s2 = s1 + ",";

//两个字面值不能相加,是错误的
string s3 = "hello" + ",";
string s4 = "hello" + "," + s1;
//这样则是正确的
string s4 = "hello" + s1 + ",";

(3)访问string对象
可以使用for循环依次访问

for (auto c:str){
...
}

也可以使用下标直接进行访问

三、vector

首先明确一点,vector是什么?

vector是一个类模板

模板可以看作是类或者函数编写的一份说明说。利用模板可以创建类或者函数,这就是实例化,实例化的时候需要指明类型,如:

vector<int>number;
vector<vector<string>>str;
vector<shape>sha;

vector可以容纳大多数类型的对象,但是由于引用不是对象,所以不能是引用类型。

3.1 定义和初始化vector对象

在这里插入图片描述

3.2 vector操作

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标准库类型string和vector 的相关文章

随机推荐