string 常用函数

string的一常用函数,待补充

string截取、替换、查找子串函数

  1. 截取子串
           s.substr(pos, n)    截取s中从pos开始(包括0)的n个字符的子串,并返回
           s.substr(pos)       截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回
  2. 替换子串
           s.replace(pos, n, s1)    用s1替换s中从pos开始(包括0)的n个字符的子串
  3. 查找子串
           s.find(s1)         查找s中第一次出现s1的位置,并返回(包括0)
    s.find(s1,pos)    从pos开始查找s中第一次出现s1的位置,并返回(包括0)
           s.rfind(s1)        查找s中最后次出现s1的位置,并返回(包括0)
           s.find_first_of(s1)     查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0)
           s.find_last_of(s1)       查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0)
           s.fin_first_not_of(s1)         查找s中第一个不属于s1中的字符的位置,并返回(包括0)
           s.fin_last_not_of(s1)         查找s中最后一个不属于s1中的字符的位置,并返回(包括0)
    String erase
    erase函数的原型如下:
    (1)string& erase ( size_t pos = 0, size_t n = npos );
    (2)iterator erase ( iterator position );
    (3)iterator erase ( iterator first, iterator last );
    也就是说有三种用法:
    (1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
    (2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
    (3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)

String find 找不到时的返回值
  之前好像在哪里见到过这个问题,时间有点久,想不起来了,今天写字符串又碰到这个问题,书上给出的定义是当string.find()没有找到时返回的是一个很大的值,网上有人说是-1,两种说法都对,因为整数在计算机中是按照补码形式存放的,一个高位的整数在少一位的整数表示时如果高位的第二位是1,那么少一位的表示下就是负数,如果高位整数的第二位包括第二位之后全是1,那么在少一位的表示下就是-1。string.find()返回的那个很大的数是2的32次方,而在用4个字节表示的int,long整形,最多只能表示到2的31次方,2的32次方减一存储的后32位的值和-1的补码完全相同:11111111 11111111 11111111 11111111;如果赋值给int或者long类型的变量自然就是-1。

找不到返回std::string::npos

判断返回值的时候最好不要用-1 ,用std::string::npos
string类的插入函数
string &insert(int p0, const char *s);
string &insert(int p0, const char s, int n);
string &insert(int p0,const string &s);
string &insert(int p0,const string &s, int pos, int n);
//前4个函数在p0位置插入字符串s中pos开始的前n个字符
string &insert(int p0, int n, char c);//此函数在p0处插入n个字符c
iterator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置
void insert(iterator it, const_iterator first, const_iterator last);//在it处插入[first,last)之间的字符
void insert(iterator it, int n, char c);//在it处插入n个字符c
String compare
.compare 方法和 strcmp并不相同, 它比较的是 std::string size()大小里的所有字节.在size() 长度范围里, 如果有’\0’字符, 一样进行比较, 所有在不知道 std::string里是否存储纯字符串时, 最好先转换为 const char
(调用c_str()), 再调用 strcmp比较. 这个坑还是很吓人的.
compare函数在>时返回1,<时返回-1,==时返回0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值