概述
目录
前言
3.1 命名空间的using声明
3.2 标准库类型string
string的一些操作
编辑
string对象的创建
string对象上的操作
处理单个string对象中的字符
3.3标准库类型vector
3.4迭代器介绍
创建
3.5数组
总结
一句话
本章一句话,数组和指针的升级版就是容器和迭代器。
3.1 命名空间的using声明
话不多说,见两张图差异。
#include<iostream>
int main(){
std::cout<<"hello wolrd"<<std::endl;
return 0;
}
使用后
#include<iostream>
using namespace std;
int main(){
cout<<"hello wolrd"<<endl;
return 0;
}
方便偷懒,又没什么影响,何乐而不为。
3.2 标准库类型string
要用string对象,需要头文件#include<string>。
#include<string>
string的一些操作
string对象的创建
在创建方面,string是一个对象,那么和int创建的方式差不了太多。
string s1; //定义string对象,默认初始化为空字符串
string s2="Alice"; //拷贝初始化为Alice
string s3=s2; //拷贝初始化为Alice
string s4("BOb"); //直接初始化为BOb
string s5(3,'a'); //s5的内容是3个a,即aaa
string对象上的操作
输入string和输出string
在输入string时,string对象会忽略前面的空白,并从第一个字符读取直到下一个空白。
string s1,s2; //创建两个string对象,都默认初始化为空字符
cin>>s1>>s2; //键盘键入“ hello world!”
cout<<s1<<endl; //输出 hello
cout<<s2<<endl; //输出 world!
对string对象输入任意数量的字符串
不会保留空格,且每个单词换行。
string s;
while(cin>>s){ //反复读取,直到到达文件结尾
cout<<s<<endl; //逐个输出每个单词,每个单词后面并换行
}
使用getline读取一整行
读取一行,且会保留空格。
string line;
getline(cin,line); //获取一行
cout<<line<<endl;
empty和size操作
empty判断字符串是否为空,size输出字符串的长度。
string line;
while(getline(cin,line)){
if (!line.empty() && line.size()>=50) //如果非空且大于50个字符的行才输出
cout<<line<<endl;
}
string的比较
用“==”可以判断两个字符是否一致。
两个string对象相加
就是把两个字符拼接。
字面值和string对象相加
“字面值+string对象”等价于拼接,但不能“字面值+字面值”。
处理单个string对象中的字符
用for遍历字符串的每个字符
string line("sadjfljkfdljas");
for(auto c:line)
cout<<c<<endl;
for+上述表=很强大!
用for改变这个字符串内容
用for改变这个字符串内容,必须把循环体变量定义成引用类型。
例如:转换成大写模式
string str("sadjfljkfdljas");
for(auto &c:str)
c=toupper(c);
cout<<str<<endl;
用"[]"访问字符串的其中一个字符
string str("sadjfljkfdljas");
cout<<str[0]<<endl;
靠,这样按书上介绍顺序写太累了,后面按照我自己理解来写了。
3.3标准库类型vector
vector表示对象的集合,里面都是相同的元素,用vector<int>来指定类型,因为里面装着许多元素,所以也加容器(container)。vector可以理解成升级版的数组,不定长的数组,可以随时增加。
对比数组,很容易理解要学习定义、初始化、for遍历、索引[]、增加push_back().
常用的如下
#include<vector>
vector<int> v; //默认初始化为空
vector<string> v2{"Aa","Bb"}; //指定初值的初始化
v2.push_back("VV"); //往容器尾巴再添一个元素
for(auto c:v2) //遍历每个元素
cout<<c<<" ";
cout<<endl;
cout<<v2[1]<<endl; //索引指定输出
3.4迭代器介绍
为了方便访问容器里的元素,迭代器应运而生。
迭代器很像一个指针,但功能更多。
创建
vector<int> v{1,2,3,4,5,6,7};
auto it=v.begin(),e=v.end(); //it和e就是迭代器
注意:修改容器后,迭代器会失效。
3.5数组
按照历史发展来说,数组升级后就是vector,最大区别就是数组大小固定,而vector灵活。
old:数组+指针
new:容器+迭代器
总结
C++是C语言的升级版,数组→容器、指针→迭代器,数组指针能实现的内容,容器和迭代器基本都能实现,而且功能更多,更高级(对同一功能用的代码更少),避免一直敲枯燥无味的重复性代码,更方便偷懒,现在作为C++程序员就应当尽量用容器和迭代器了。
最后
以上就是眼睛大红牛为你收集整理的《C++ Primer》第三章 字符串、向量、数组的全部内容,希望文章能够帮你解决《C++ Primer》第三章 字符串、向量、数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复