经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C++STL快速入门学习
来源:cnblogs  作者:smartZhou  时间:2018/11/19 9:24:43  对本文有异议

C++ STL中最基本以及最常用的类或容器无非就是以下几个:

  • string
  • vector
  • set
  • list
  • map

下面就依次介绍一下它们,并给出一些最常见的使用方法,做到最快入门。

string

首先看看我们C语言中一般怎么使用字符串的

  1. //创建指针指向字符串常量,这段字符串我们是不能修改的
  2. char* s1="Hello smartZhou";
  3. //想要创建 可以修改的字符串,我们可以使用数组分配空间
  4. char s2[20]="Hello smartZhou";
  5. 或者这样
  6. char s3[ ]="Hello smartZhou";
  7. //当然我们也可以动态分配内存
  8. char *s4=(char *)malloc(20*size(char));
  9. gets(s4);

C++标准库中的string表示可变长的字符串,它在头文件string(注意不是string.h)里面。

  1. #include <string>

用string初始化字符串分两类:用"="就是拷贝初始化,否则就是直接初始化。

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

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main()
  5. {
  6. string s1; //初始化字符串,空字符串
  7. string s2=s1; //拷贝初始化,深拷贝字符串
  8. string s3="Hello smartZhou"; //直接初始化,s3存了字符串Hello smartZhou
  9. string s4(10,'a'); //s4存放的字符串的10个a,即aaaaaaaaaa
  10. string s5(s4); //拷贝初始化,深拷贝字符串
  11. string s6("I am smartZhou"); //直接初始化
  12. string s7=string(6,'c'); //拷贝初始化,s7中6个c,即cccccc
  13. //string的各种操作
  14. string s8=s3+s6; //将两个字符串合并成一个
  15. s3=s6; //将s6中的元素赋值给s3,此时s3="I am smartZhou"
  16. cin>> s1;
  17. cout << s2 << endl;
  18. cout << s3 << endl;
  19. cout << s4 << endl;
  20. cout << s5 << endl;
  21. cout << s6 << endl;
  22. cout << s7 << endl;
  23. cout << s8 << endl;
  24. cout << "s7 size = " << s7.size() << endl; //字符串长度,不包括结束符
  25. cout << (s2.empty() ? "This string is empty" : "This string is not empty") << endl;;
  26. system("pause");
  27. return 0;
  28. }

string的IO操作

使用cin读入字符时,遇到空白就停止读取。比如程序输入的是

  1. "Hello World"

那么我们得到的将是"Hello",Hello后面的空格没了,后面的World也读不出来。
如果我们想把整个Helo World读进来怎么办?那就这样做

  1. cin>>s1>>s2;

Hello存在s1里面,World存入在s2里面了。
有时我们想把一个句子存下来,又不想像上面那样创建多个string来存储单词,怎么办?
那就是用getline来获取一整行内容。

  1. string str;
  2. getline(cin,str);
  3. cout<<str<<endl;

当把string对象和字符变值及字符串面值混在一条语句中使用时,必须确保+的两侧的运算对象至少有一个是string

  1. string s1=s2+"Hello world"; //正确
  2. string s3="s"+"Hello world" //错误
  3. string s4="hello"+"world"+s1;//错误
  4. string s5=s1+“hello”+"world";//正确 上面式子改一下顺序,s1放前面,就正确了,注意理解=号右边的运算顺序
  • 未完待续 本文后续更新

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号