C++进阶(三) : std::string类【详解】

在这里插入图片描述

C++中的string类是由头文件string支持的,类中包含若干构造函数以及大量的方法,本文详细介绍C++中string类的用法
1、构造方法
string类构造函数用来创建一个string类事例,常用的方法有以下6个:

  1. string str(const char* s): 创建一个string对象且使用字符串常量s初始化。
  2. string str(int n,char c);创建一个包含n个元素的string类对象,且其中每个元素都被初始化为元素c。
  3. string str(const string & tmp):使用string类对象 tmp初始化str(复制构造函数)
  4. string str = string():创建一个默认的string类对象,长度为0
  5. string str = string(const char *p,int n):将string类对象str初始化为p所指向的字符串的前n个字符。
  6. string str = string(string tmp,int begin,int n):将strling类对象str初始化为tmp的第begin个字符开始的n个字符。

2、string类操作
(1)重载运算符‘=’、‘!=’、‘+=’、‘+’、‘[]’
以下语句都是合法语句:

string str1,str2,str3;
str1 = “hello”;
str2 = str1;
str2[2] = 'P';
str2 += str1;
str3 = str1 + str2;
if(str3 != str2)
{
	std::cout<<"str3 != str2"<<std::endl;
}

(2)常用的string类的成员函数

  • int size()函数:返回string类对象的字符串长度。

  • int length():同size(),返回string类对象的字符串长度。

  • int max_size():返回string类对象的最大字符串长度。

  • int capacity():返回string类对象的当前容量(不必申请内存,就可存放的元素个数)。

  • bool empty():判断当前string类对象是否为空。

  • void resize(int len,char c);把字符串当前大小置为len,并用字符c填充不足的部分

  • const char *data(); 返回一个非null终止的c字符数组

  • const char *c_str(); 返回一个以null终止的c字符串,即string与char‘[]转换

  • char at():返回当前string类对象中第n个字符。

  • int copy(char *s, int n, int pos = 0) const;把string类对象中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目

  • string &assign(const char *s);用c类型字符串s给string类对象赋值

  • string &append(const char *s); 把c类型字符串s连接到当前string类对象结尾。

  • string &assign(const char *s,int n);用c字符串s开始的n个字符给string类对象赋值

  • string &append(const char *s,int n);把c类型字符串s的前n个字符连接到当前string类对象结尾。

  • string &assign(const string &s);将string类对象的一个引用s,赋值给当前string类对象。

  • string &append(const string &s):将string类对象s连接到当前string类对象结尾处。

  • string &assign(int n,char c);使用n个字符c给string类对象赋值。

  • string &append(int n,char c); 在当前string类对象结尾添加n个字符c。

  • string &assign(const string &s,int start,int n=npos);把string类对象s从start开始的n个字符赋给string类对象。

  • string &append(const string &s,int pos,int n=npos);将string类对象s从pos开始的n个字符连接到当前string类对象的结尾。

  • int compare(const string &s) ;比较当前string类对象和s的大小。

  • int compare(int pos, int n,const string &s)const;比较当前string类对象从pos开始的n个字符组成的字符串与s的大小。

  • int compare(int pos, int n,const string &s,int pos2,int n2)const;比较当前string类对象从pos开始的n个字符组成的字符串与s中pos2开始的n2个字符组成的字符串的大小

  • string &replace(int p0, int n0,const char *s);删除当前string类对象从p0开始的n0个字符,然后在p0处插入串s

  • string &replace(int p0, int n0,const char *s, int n);删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符

  • string &replace(int p0, int n0,const string &s);删除从p0开始的n0个字符,然后在p0处插入string类对象s

  • string &replace(int p0, int n0,const string &s, int pos, int n);删除p0开始的n0个字符,然后在p0处插入string类对象s中从pos开始的n个字符

  • string &replace(int p0, int n0,int n, char c);删除p0开始的n0个字符,然后在p0处插入n个字符c
    -string &insert(int p0, const char *s);在p0位置插入字符串s。

  • string &insert(int p0, const char *s, int n);在p0位置插入字符串s中开始的前n个字符

  • string &insert(int p0,const string &s, int pos, int n);在p0位置插入字符串s中pos开始的前n个字符

  • string &insert(int p0, int n, char c);在p0处插入n个字符c

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

  • int find(char c, int pos = 0) ;从pos开始查找字符c在当前字符串的位置,反方向查找,可使用rfind函数,参数一致

  • int find(const char *s, int pos = 0) ;从pos开始查找字符串s在当前string类对象中的位置,反方向查找,可使用rfind函数,参数一致

  • int find(const string &s, int pos = 0);从pos开始查找string类对象s在当前string类对象中的位置,反方向查找,可使用rfind函数,参数一致
    -int find_first_of(char c, int pos = 0) const;从pos开始查找字符c第一次出现的位置

  • int find_first_of(const char *s, int pos = 0);从pos开始查找当前string类对象中第一个在字符串s的位置。

  • int find_first_of(const string &s,int pos = 0) ;从pos开始查找当前string类对象中第一个在当前string类对象的位置。

  • string substr(int pos = 0,int n = npos) ;返回pos开始的n个字符组成的字符串

  • void swap(string &s2); 交换当前string类对象与s2的值。
    (3)string类的友元函数
    getline(cin,str):从标准输入中读入一段字符串赋值到str中
    在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiang木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值