string类

string类的头文件:

#include<string>

string对象的初始化:
(1)直接给一种字符串常量

string s1("S1");
string s2="S2";

(2)其他方法

string s1(3,'1');

s1就是111

(3)字符赋值给string对象

string s;
s='n';

(4)错误方法

string e1='c';
//不能用字符去初始化string
string e2('u');
string e3=22;
string e4(8);

string类的基础函数:
(1)长度:

string s("Hello");
s.length();

(2)赋值

string s1("Hello"),s2,s3,s4;
s2=s1;
//用“=”赋值
s3.assign(s1);
//assign赋值
s4.assign(s1,1,3);
//s1从下标1开始的字符开始复制3个字符到s4中

(3)访问string中的字符

s1.at(10);
//访问s1的第10个字符

其实s1[10]也可以对string对象进行访问,但是at函数会做范围检查,如果超出范围的话就会抛出异常,但是下标运算符[]不做范围检查

(4)连接

s1=s1+s2;
s1.append(s2);
//等价于s1=s1+s2
s1.append(s2,3,s2.size());
从下标3开始复制s2.size()字符,如果字符内没有足够的字符,那么就复制到最后一个字符

(5)比较
=>,<=,==,>,<

int flag;
flag=s1.compare(s2);
flag=s1.compare(1,2,s2,0,3);
//s1下标从1-2,s2下标从0-3进行比较

(6)求子串

s2=s1.substr(4,5);
//s2为s1从下标4开始的5个字符,如果超过了字符串的长度,那就到最后一个截止

(7)交换

s1.swap(s2);

交换s1和s2
(8)查找子串

s1.find("a");
s1.find("s",2);

从前向后找查找第一次出现“a”的下标,如果找不到就返回string::npos
从下标2开始查找“s”第一次出现的位置

s1.rfind("a");

从后向前找查找第一次出现“a”的下标,如果找不到就返回string::npos

s1.find_first_of("abcd");

从前向后在s1中查找字符‘a’、‘b’、‘c’、‘d’任意一个字符第一次出现的位置。如果找不到就返回string::npos

s1.find_last_of("abcd");

从后向前在s1中查找字符‘a’、‘b’、‘c’、‘d’任意一个字符第一次出现的位置。如果找不到就返回string::npos

s1.find_first_not_of("abcd");

从前向后在s1中查找字符‘a’、‘b’、‘c’、‘d’任意一个字符不是第一次出现的位置。如果找不到就返回string::npos

s1.find_last_not_of("abcd");

从后向前在s1中查找字符‘a’、‘b’、‘c’、‘d’任意一个字符不是第一次出现的位置。如果找不到就返回string::npos
(9)删除

s1.erase(2);

删除下标2及之后的字符
(10)替换

s1.replace(1,2,"111");

将s1中下标从1开始的2个字符换成"111"

s1.replace(1,2,"111",1,2);

将s1中下标从1开始的2个字符换成"111"中下标1开始的2个字符
(11)插入

s1.insert(5,s2);

将s2插入s1下标为5的位置

s1.insert(5,s2,5,3);

将s2从下标5开始的3个字符插入s1下标2的位置
(12)转换成C语言式char*字符串

s1.c_str();

s1.c_str()返回const char*类型的字符串,且该字符串以‘\0’结尾

s2=s1.data();

s1.data()返回char*类型的字符串,对s1进行修改可能会导致s2出错

(13)字符串拷贝

s1.copy(p2,5,0);

s1.copy(p2,5,0)表示从s1的下标0的字符开始制作一个最长长度为5的字符串副本将其值赋值给p2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值