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快速入门学习的更多相关文章

  1. 【转】C++ STL快速入门

    转自:https://www.cnblogs.com/skyfsm/p/6934246.html 冠军的试炼 悟已往之不谏,知来者之可追 博客园 首页 新随笔 联系 订阅 管理 随笔 - 60  文章 ...

  2. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  3. Sass简单、快速上手_Sass快速入门学习笔记总结

    Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...

  4. C++ STL快速入门

    在数月之前的机试中第一次体验到STL的威力,因为自己本来一直在用C语言做开发,很多数据结构都是自己造的,比如链表.队列等,第一次接触C++ STL后发现这些数据结构都已经给我提供好了,我直接拿去调用就 ...

  5. ASP.NET Core快速入门--学习笔记系列文章索引目录

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...

  6. Qt快速入门学习笔记(基础篇)

    本文基于Qter开源社区论坛版主yafeilinux编写的<Qt快速入门系列教程目录>,网址:http://bbs.qter.org/forum.php?mod=viewthread&am ...

  7. Objective C 快速入门学习一

    Objective-C程序设计 1. 直接用Xcode作为IDE,舍弃gcc编译方面的学习.2. 入门例子:Eg:打印Hello World 控制台程序 #import<Foundation/F ...

  8. 屌丝逆袭--Asp.net快速入门学习教程 第1晚

    本人屌丝一名,因工作原因,不能白天学习编程,所以只能做夜猫子学习编程,期待一天能逆袭成一名高帅富的技术大牛(靠,都想到流口水了........囧). 本教程记录本屌丝学习Asp.net的过程,大牛就飞 ...

  9. Python快速入门学习笔记(二)

    注:本学习笔记参考了廖雪峰老师的Python学习教程,教程地址为:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb49318210 ...

随机推荐

  1. luogu1314 聪明的质检员

    题目大意 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1 到 n 逐一编号,每个矿石都有自己的重量 wi 以及价值 vi.检验矿产的流程是: 1.给定 m 个区 ...

  2. Bootstrap popover源码分析

    /* ======================================================================== * Bootstrap: popover.js ...

  3. [RK3288][Android6.0] 调试笔记 --- 如何确认声卡是否注册成功【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/78399875 Platform: RK3288 OS: Android 6.0 Kernel ...

  4. 学习Flash Builder编程的准备工作

    1. 下载教科书,Essential ActionScript 3.0或者Programming ActionScript 3.0.这将是你的很好的老师.英语不灵的买一本中文版本. 2. 安装Flas ...

  5. luogu 2622 关灯问题II

    题目大意: 有一些灯,有些开关可以控制这些灯,给出矩阵表示控制 对于矩阵中的a i j 表示第i个开关控制第j个灯的情况 若元素为1 表示当灯开着的时候,关掉灯 若元素为0 表示无操作 若元素为-1 ...

  6. 【POJ 1144】 Network

    [题目链接] 点击打开链接 [算法] Tarjan算法求割点 [代码] #include <algorithm> #include <bitset> #include < ...

  7. bzoj 3534: [Sdoi2014]重建【矩阵树定理】

    啊啊啊无脑背过果然不可取 比如这道题就不会写 参考:https://blog.csdn.net/iamzky/article/details/41317333 #include<iostream ...

  8. Wannafly挑战赛29A御坂美琴

    传送门 这套题很有意思2333 蠢了--首先先判总共加起来等不等于\(n\),不是的话就不行 然后dfs记录\(n\)不断分下去能分成哪些数,用map记录一下,判断是否所有数都能被分出来就是了 //m ...

  9. SpringBoot整合SpringSecurity简单案例

    在我们开发项目的过程中经常会用到一些权限管理框架,Java领域里边经常用的可能就是shiro了,与之对应的还有SpringSecurity,SpringSecurity可以说是非常强大,与Spring ...

  10. Visual Studio Code 扩展工具集,记录

    编码 提高效率及校验 Auto Close Tag 自动闭合标签 Auto Rename Tag 自动更改HTML/XML标签,不需要再进行二次修改,减少50%的工作量! Path Intellise ...