C++STL快速入门学习
C++ STL中最基本以及最常用的类或容器无非就是以下几个:
- string
- vector
- set
- list
- map
下面就依次介绍一下它们,并给出一些最常见的使用方法,做到最快入门。
string
首先看看我们C语言中一般怎么使用字符串的
//创建指针指向字符串常量,这段字符串我们是不能修改的
char* s1="Hello smartZhou";
//想要创建 可以修改的字符串,我们可以使用数组分配空间
char s2[20]="Hello smartZhou";
或者这样
char s3[ ]="Hello smartZhou";
//当然我们也可以动态分配内存
char *s4=(char *)malloc(20*size(char));
gets(s4);
C++标准库中的string表示可变长的字符串,它在头文件string(注意不是string.h)里面。
#include <string>
用string初始化字符串分两类:用"="就是拷贝初始化,否则就是直接初始化。

string s1; //初始化字符串,空字符串
string s2=s1; //拷贝初始化,深拷贝字符串
string s3="Hello smartZhou"; //直接初始化,s3存了字符串Hello smartZhou
string s4(10,'a'); //s4存放的字符串的10个a,即aaaaaaaaaa
string s5(s4); //拷贝初始化,深拷贝字符串
string s6("I am smartZhou"); //直接初始化
string s7=string(6,'c'); //拷贝初始化,s7中6个c,即cccccc

#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1; //初始化字符串,空字符串
string s2=s1; //拷贝初始化,深拷贝字符串
string s3="Hello smartZhou"; //直接初始化,s3存了字符串Hello smartZhou
string s4(10,'a'); //s4存放的字符串的10个a,即aaaaaaaaaa
string s5(s4); //拷贝初始化,深拷贝字符串
string s6("I am smartZhou"); //直接初始化
string s7=string(6,'c'); //拷贝初始化,s7中6个c,即cccccc
//string的各种操作
string s8=s3+s6; //将两个字符串合并成一个
s3=s6; //将s6中的元素赋值给s3,此时s3="I am smartZhou"
cin>> s1;
cout << s2 << endl;
cout << s3 << endl;
cout << s4 << endl;
cout << s5 << endl;
cout << s6 << endl;
cout << s7 << endl;
cout << s8 << endl;
cout << "s7 size = " << s7.size() << endl; //字符串长度,不包括结束符
cout << (s2.empty() ? "This string is empty" : "This string is not empty") << endl;;
system("pause");
return 0;
}

string的IO操作
使用cin读入字符时,遇到空白就停止读取。比如程序输入的是
"Hello World"
那么我们得到的将是"Hello",Hello后面的空格没了,后面的World也读不出来。
如果我们想把整个Helo World读进来怎么办?那就这样做
cin>>s1>>s2;
Hello存在s1里面,World存入在s2里面了。
有时我们想把一个句子存下来,又不想像上面那样创建多个string来存储单词,怎么办?
那就是用getline来获取一整行内容。
string str;
getline(cin,str);
cout<<str<<endl;
当把string对象和字符变值及字符串面值混在一条语句中使用时,必须确保+的两侧的运算对象至少有一个是string
string s1=s2+"Hello world"; //正确
string s3="s"+"Hello world" //错误
string s4="hello"+"world"+s1;//错误
string s5=s1+“hello”+"world";//正确 上面式子改一下顺序,s1放前面,就正确了,注意理解=号右边的运算顺序
未完待续 本文后续更新
C++STL快速入门学习的更多相关文章
- 【转】C++ STL快速入门
转自:https://www.cnblogs.com/skyfsm/p/6934246.html 冠军的试炼 悟已往之不谏,知来者之可追 博客园 首页 新随笔 联系 订阅 管理 随笔 - 60 文章 ...
- 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
[原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...
- Sass简单、快速上手_Sass快速入门学习笔记总结
Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...
- C++ STL快速入门
在数月之前的机试中第一次体验到STL的威力,因为自己本来一直在用C语言做开发,很多数据结构都是自己造的,比如链表.队列等,第一次接触C++ STL后发现这些数据结构都已经给我提供好了,我直接拿去调用就 ...
- ASP.NET Core快速入门--学习笔记系列文章索引目录
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...
- Qt快速入门学习笔记(基础篇)
本文基于Qter开源社区论坛版主yafeilinux编写的<Qt快速入门系列教程目录>,网址:http://bbs.qter.org/forum.php?mod=viewthread&am ...
- Objective C 快速入门学习一
Objective-C程序设计 1. 直接用Xcode作为IDE,舍弃gcc编译方面的学习.2. 入门例子:Eg:打印Hello World 控制台程序 #import<Foundation/F ...
- 屌丝逆袭--Asp.net快速入门学习教程 第1晚
本人屌丝一名,因工作原因,不能白天学习编程,所以只能做夜猫子学习编程,期待一天能逆袭成一名高帅富的技术大牛(靠,都想到流口水了........囧). 本教程记录本屌丝学习Asp.net的过程,大牛就飞 ...
- Python快速入门学习笔记(二)
注:本学习笔记参考了廖雪峰老师的Python学习教程,教程地址为:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb49318210 ...
随机推荐
- CPU卡的读写【转】
本文转载自:http://blog.csdn.net/logaa/article/details/7465226 一般来说,对存储卡和逻辑加密卡操作,使用接触式IC卡通用读写器:对CPU卡使用CPU卡 ...
- Linux Centos 下安装软件 三种方式
1)一种是软件的源代码,您需要自己动手编译它.这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz). 2)另一种是软件的可执行程序,你只要安装它就可以了.这种软件安装包通常被是一个R ...
- 怎么样关掉红米note开发者选项
进 系统设置\应用 ,找到“设置”点进去,清一下数据,再打开“设置”查看,就没有“开发者选项”了
- [Codeforces 1037E] Trip
[题目链接] http://codeforces.com/problemset/problem/1037/E [算法] 首先离线 , 将问题倒过来考虑 , 转化为 : 每次删除一条边 , 此时最多有多 ...
- 清北考前刷题day2早安
/* 做法一:按h sort一遍,对于一段区间[i,j],高度花费就是h[j]-h[i] 然后枚举区间,把区间内C排序,一个一个尽量选即可. n^3logn 标算:n^3 dp 高度排序,保证从前往后 ...
- c++ string函数合集
s.substr(x,len) 在s中取出从x位置开始,长度为len的字符串,并返回string类型的字符串. s.find(a) 在s中查找字符串a,并返回起始下标(从0开始),若不存在,返回184 ...
- Linux文件详解
一.Linux文件类型分:普通文件.目录文件.链接文件.设备文件.管道文件. 1.普通文件:由ls -al显示属性时,第一个属性为 [-],例如 [-rwxrwxrwx].包括: 纯文本文件(ASCI ...
- RabbitMQ指南之五:主题交换器(Topic Exchange)
在上一章中,我们完善了我们的日志系统,用direct交换器替换了fanout交换器,使得我们可以有选择性地接收消息.尽管如此,仍然还有限制:不能基于多个标准进行路由.在我们的日志系统中,我们可能不仅希 ...
- Hacker News的热门排名算法(转)
Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由 Paul Graham 的创业孵化器 Y Combinator 创建.与其它社会化新闻网站不同的是 Hacker News ...
- 百度地图API在vue-cli中路径错误的问题
在使用百度地图的时候,需要使用自定义的icon图片,百度的案例中使用的是线上地址,但当替换为本地图片路径的时候,错误出现了 这是本地图片地址 ) // 设置覆盖物大小 ); 这里有一点需要注意,这里路 ...