当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C++STL快速入门学习

C++STL快速入门学习

2018年11月20日  | 移动技术网IT编程  | 我要评论

ca1410,罗贯中的名言,贵州省人事考试信息

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放前面,就正确了,注意理解=号右边的运算顺序
  • 未完待续 本文后续更新

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网