STL笔记(1)-string类

来源:互联网 发布:左轮吉他淘宝店怎么样 编辑:程序博客网 时间:2024/06/13 01:01
我将分七次将标准模板库(STL)学习笔记的内容以容易理解的方式整理出来,同时配合源码(几乎每个知识点都会有示例),希望能写得清晰易懂。

STL/string at master · amazingzby/STL · GitHub

本文是第一篇,最简单的一篇,主要介绍string类。

string是什么:

string是STL的字符串类型,用来表示字符串,而在使用string之前,字符串通常是用char *来表示。string是一个类,封装了char *,管理这个字符串,是一个char*型的内容管理器。

string使用前准备:

#include<string>

using namespace std;

string的构造函数:

string();//默认构造函数

string(const string &str);//拷贝构造函数

string(const char *s);用字符串s初始化

string(int n,const char c);用n个字符c初始化


取字符串的某个元素:

用at()方法或者方括号方法:

string s1="safdfdsfgdg";

char chD=s1.at(5);

char chD=s1[5];

中括号和at方法大致一样,唯一的区别为对越界处理方式的不同:

比如取第50个字符(越界),用中括号取值导致程序错误,用at取值抛出异常(out_of_range)


string获取内容的方式:用c_str()

cout<<s1.c_str();


把string的内容拷贝至char *所指向的内存中:

int copy(char *s,int n,int pos=0)const;

把当前串中以pos开始的n个字符拷贝至以s为起始位置的字符数组中,返回实际拷贝的数目。

int iCount=s1.copy(e,7,0);

长度,以及是否为空判断


int length()const;返回当前字符串长度,长度不包括字符串结尾的'\0'

bool empty()const;判断是否为空,空为真,非空为假


string的赋值:

string &operator=(const string &s);//将字符串s赋值给当前字符串

string &assign(const char *s);//把字符串s赋给当前字符串

string &assign(const char *s,int n);把s前n个字符赋给当前字符串

string &assign(const string &s);把s赋值给当前字符串

string &assign(int n,char c);把n个c赋值给当前字符串

string &assign(const string &s,int start,int n);把s从start开始的n个字符串赋值给当前字符串


string &operator+=(const string &s);

string &operator+=(const char *s);

string &append(const char *s);

string &append(const char *s,int n);

上述前三个为把字符串s连接至当前字符串结尾,后一个为把s的前n个字符串连接至尾部

string &append(const string &s);用法同operator+=()

string &append(const string &s,int pos,int n);将s从pos开始的n个字符连接到当前字符串尾

string &append(int n,char c);将n个字符c加至结尾


string字符串的比较

int compare(const string &s)const;

int compare(const char *s)const;

上述比较函数在>时返回1,<时返回-1,==时返回0,首先按第一个字符比较,如果相同再比较第二个,以此类推,按字符ASCII的大小比较


取字符串的子串:

string substr(int pos=0,int n=npops)const;取从pop开始的n个字符组成的字符串


字符串的查找:

int find(char c,int pop=0)const;从pos开始查找c在当前字符串的位置

int find(const char *s,int pos=0)const;从pos开始查找字符串s在当前字符串的位置

int find(const string &s,int pos=0)const;从pos开始查找字符串s在当前字符串的位置

find函数如果找不到,就返回-1

反向查找:效果同正向查找,只是查找方式时从后往前查找

int rfind(char c,int pos=npos);

int rfind(const char *s,int pos=npos)const;

int rfind(const string &s,int pos=npos)const;


string的插入

string &insert(int pos,const char *s);

string &insert(int pos,const string &s);

上述插入函数在pos位置插入字符串s

string &insert(int pos,int n,char c);在pos位置插入n个字符c


字符串删除:

string &erase(int pos=0,int n=npos);删除pos开始的n个字符,返回修改后的字符串


string的替换:

string &replace(int pos,int n,const char *s);删除从pos开始的n个字符,然后在pos处插入s

string &replace(int pos,int n,const string &s);删除从pos开始的n个字符,然后在pos处插入s

void swap(string &s2);交换当前字符串与s2的值

0 0