C++的string类

建议直接看C语言中文网的

其实 string 类是STL的 basic_string 模板实例化得到的模板类,定义如下:
typedef basic_string<char> string;

构造函数

string s1();  // si = ""
string s2("Hello");  // s2 = "Hello"
string s3(4, 'K');  // s3 = "KKKK"
string s4("12345", 1, 3);  //s4 = "234",即 "12345" 的从下标 1 开始,长度为 3 的子串

string对象赋值

可以用 char* 类型的变量、常量,以及 char 类型的变量、常量对 string 对象进行赋值。例如:

string s1;
s1 = "Hello";  // s1 = "Hello"
s2 = 'K';  // s2 = "K”

assign 成员函数,可以用来对 string 对象赋值。assign 成员函数返回对象自身的引用,用法和构造函数一样

string s1("12345"), s2;
s3.assign(s1);  // s3 = s1
s2.assign(s1, 1, 2);  // s2 = "23",即 s1 的子串(1, 2)
s2.assign(4, 'K');  // s2 = "KKKK"
s2.assign("abcde", 2, 3);  // s2 = "cde",即 "abcde" 的子串(2, 3)

字符串的长度

s.size()
或
s.length()

字符串的连接

可以用+ 或 += 连接,
也可以用append()成员函数连接 ,用法和构造函数差不多

string对象比较

<、<=、==、!=、>=、> 运算符比较 string 对象
compare成员函数比较

  • 小于 0 表示当前的字符串小;
  • 等于 0 表示两个字符串相等;
  • 大于 0 表示另一个字符串小。

求string对象的子串

substr(n,m)成员函数,截取从下标n开始的m个字符

交换两个字符串的内容

s1.swap(s2);

查找子串和字符

查找结果都是子串或字符在string对象中的下标。如果查不到,则返回 string::nposstring: :npos 是在 string 类中定义的一个静态常量。数值为:18446744073709551615

  • find:从前往后查找子串或字符出现的位置。
  • rfind:从后往前查找子串或字符出现的位置。
  • find_first_of:从前往后查找何处出现另一个字符串中包含的字符。例如:
    s1.find_first_of(“abc”); //查找s1中第一次出现"abc"中任一字符的位置
  • find_last_of:从后往前查找何处出现另一个字符串中包含的字符。
  • find_first_not_of:从前往后查找何处出现另一个字符串中没有包含的字符。
  • find_last_not_of:从后往前查找何处出现另一个字符串中没有包含的字符。

替换子串

replace(n,m,s,nn,mm)成员函数:用s串从下标nn长度为mm的子串,替换原串的从n开始长度为m的子串
s,nn,mm这一段的的写法和构造函数一致

删除子串

erase(n,m) 成员函数:删除从下标 n 开始长度 m 的子串,没有指定 m 则到结尾

插入字符串

insert(n,s,nn,mm)成员函数:从下标 n 开始,插入 s 串的 nn 开始长度为 mm 的子串
insert(n,s)从下标 n 开始插入 s 串
insert(n,x,char)从下标 n 开始插入 x 个 char

string对象也可以用stl算法操作

string对象可以看成顺序容器,支持随机访问迭代器。

注:
next_permutation(s.begin(),s.end());可以使字符串变为下一个排列
prev_permutation(s.begin(),s.end());可以使字符串变为前一个排列
他们的返回值都是是否有下/前一个排列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值