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 ...
随机推荐
- luogu1314 聪明的质检员
题目大意 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1 到 n 逐一编号,每个矿石都有自己的重量 wi 以及价值 vi.检验矿产的流程是: 1.给定 m 个区 ...
- Bootstrap popover源码分析
/* ======================================================================== * Bootstrap: popover.js ...
- [RK3288][Android6.0] 调试笔记 --- 如何确认声卡是否注册成功【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/78399875 Platform: RK3288 OS: Android 6.0 Kernel ...
- 学习Flash Builder编程的准备工作
1. 下载教科书,Essential ActionScript 3.0或者Programming ActionScript 3.0.这将是你的很好的老师.英语不灵的买一本中文版本. 2. 安装Flas ...
- luogu 2622 关灯问题II
题目大意: 有一些灯,有些开关可以控制这些灯,给出矩阵表示控制 对于矩阵中的a i j 表示第i个开关控制第j个灯的情况 若元素为1 表示当灯开着的时候,关掉灯 若元素为0 表示无操作 若元素为-1 ...
- 【POJ 1144】 Network
[题目链接] 点击打开链接 [算法] Tarjan算法求割点 [代码] #include <algorithm> #include <bitset> #include < ...
- bzoj 3534: [Sdoi2014]重建【矩阵树定理】
啊啊啊无脑背过果然不可取 比如这道题就不会写 参考:https://blog.csdn.net/iamzky/article/details/41317333 #include<iostream ...
- Wannafly挑战赛29A御坂美琴
传送门 这套题很有意思2333 蠢了--首先先判总共加起来等不等于\(n\),不是的话就不行 然后dfs记录\(n\)不断分下去能分成哪些数,用map记录一下,判断是否所有数都能被分出来就是了 //m ...
- SpringBoot整合SpringSecurity简单案例
在我们开发项目的过程中经常会用到一些权限管理框架,Java领域里边经常用的可能就是shiro了,与之对应的还有SpringSecurity,SpringSecurity可以说是非常强大,与Spring ...
- Visual Studio Code 扩展工具集,记录
编码 提高效率及校验 Auto Close Tag 自动闭合标签 Auto Rename Tag 自动更改HTML/XML标签,不需要再进行二次修改,减少50%的工作量! Path Intellise ...