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. Lein droid

    最近尝试使用Clojure,发现有个Lein droid的项目可以方便的在android下使用Clojure. http://clojure-android.info/#get-started 尝试了 ...

  2. luogu 3375 【模板】KMP字符串匹配

    我太菜了 今天才学会kmp #include<iostream> #include<cstdio> #include<algorithm> #include< ...

  3. 利用XStream实现对象XML话

    使用Java原生的序列化的方式来表示一个对象.总结一下这种对象表示方式的优缺点: 1.纯粹的Java环境下这种方式可以很好地工作,因为它是Java自带的,也不需要第三方的Jar包的支持 2.多语言环境 ...

  4. Newtonsoft.Json序列化日期时间去T的几种方式。

    原文地址:MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式. http://www.cnblogs.com/wuball/p/4231343. ...

  5. Java 链式写法

    Java链式写法,子类继承父类的属性,也可以返回子类的对象,只是需要重写基类的Set方法 public class MyLS { public static void main(String[] ar ...

  6. map的遍历方式(使用Junit测试)

    package cn.sdut.lah; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impo ...

  7. [Swift通天遁地]一、超级工具-(17)自定义的CVCalendar日历

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. Git管理多个远程分支

    在此目录下使用GIT要注意一下几点: 因为这个目录是管理远程多个不同的分支的项目,所以使用GIT之前确认一下几点: 打开git bash,使用命令:git config –list查看目前本地的目录文 ...

  9. 303 Range Sum Query - Immutable 区域和检索 - 不可变

    给定一个数组,求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和,包含 i,  j 两点.例如:给定nums = [-2, 0, 3, -5, 2, -1],求和函数为sumRange() ...

  10. java IO流技术 之 File

    IO流技术 概念:input - output 输入输出流: 输入:将文件读到内存中: 输出:将文件从内存中写出到其他地方 作用:主要就是解决设备和设备之间的数据传输问题. File :文件类的使用十 ...