string类

 

http://hi.baidu.com/%C5%E1%F6%CE0227/blog/item/efaa4ce65d795b29b9382093.html

一. 标准库string 类型:

                                   初始化string 对象
    -------------------------------------------------------------------------------
    string s1                默认构造函数, s1 为空串;
    string s2(s1)            将s2 初始化为s1 的一个副本;
    string s3("value")       将s3 初始化为一个字符串字面值副本;
    string s4(n, 'c')        将s4 初始化为字符'c' 的n 个副本;
    string s5(cp);           用C 风格的字符串初始化s5, (char cp[]);
    -------------------------------------------------------------------------------
                                  string 对象的操作
    -------------------------------------------------------------------------------
    s.empty()                若为空则返回true , 否则返回false ;
    s.size()                 返回s 中字符的个数;
    s[n]                     取值操作, 位置从0 开始;
    s1+s2                    字符串连接操作;
    s1 = s2                  赋值操作;
    != , <, <=, >, >=        保持惯有属性;
    -------------------------------------------------------------------------------
二. 结合顺序容器, 再谈string 类型:
     string 可以看成一种特殊的字符容器.
                                     001. 初始化string 的其他方法
    -------------------------------------------------------------------------------
    string s(cp, n)             创建一个string 对象, 它被初始化为cp 所指向数组的前个元素
                                的副本;
    string s(s2, pos2)          创建一个string 对象, 它被初始化为一个已存在的string 对象
                                s2 中从下标pos2 开始的字符的副本. 若 pos2 > s2.size
                                (), 则操作未定义.
    string s(s2, pos2, len2)    创建一个string 对象, 它被初始化为s2 中从下标pos2 开始的
                                len2 个字符的副本. 若 pos2 > s2.size(), 则操作未定义.
                           
                                注: n , len2, pos2 都是 unsigned 值.
    -------------------------------------------------------------------------------
    002.
    string 类型作为一个特殊的容器, 与容器共有所有容器操作:
        c.insert(p, t)        在迭代器p 的前边插入t, 返回指向新添加元素的迭代器.
        c.insert(p, n, t)     在迭代器p 的前边插入n 个t, 返回void.
        c.insert(p, b, e)     在迭代器p 的前边插入迭代器b 和e 标记范围内的元素, 返回void.
        c.assign(b, e)        重新设置c 的元素: 将迭代器b 和e 标记的范围内所有元素复制到c
                              中, b 和e 必须不是指向c 中元素的迭代器;
        c.assign(n, t)        将容器c 重新设置为存储n 个值为t 的元素;
        c.erase(p)            删除迭代器p 指向的元素, 返回被删除元素后边元素的迭代器.
        c.erase(b, e)         删除迭代器b 和e 范围内的元素, 返回被删除段后面元素的迭代器.

                                     002. 修改string 对象的方法(string 特有的操作)
    -------------------------------------------------------------------------------
    s.insert(pos, n, c)            在下标为pos 的元素之前插入n 个字符c ;
    s.insert(pos, s2)              在下标为pos 的元素之前插入s2 的副本;
    s.insert(pos, s2, pos2, len)   在下标为pos 的元素之前插入s2 中从下标pos2 开始的len
                                   个字符;
    s.insert(pos, cp, len)         在下标为pos 的元素之前插入cp 所指向数组的前len 个字符;
    s.insert(pos, cp)              在下标为pos 的元素之前插入cp 所指向的以空字符结束的字符
                                   串副本;
    s.assign(s2)                   用s2 的副本替换s ;
    s.assign(s2, pos2, len)        用s2 中从下标pos2 开始的len 个字符副本替换s ;
    s.assign(cp, len)              用cp 所指向数组的前len 个字符副本替换s ;
    s.assign(cp)                   用cp 所指向的以空字符结束的字符串副本替换s ;
    s.erase(pos, len)              删除从下标pos 开始的len 个字符;
   
    s.append(args)                 将args 串接在s 后面;
    s.replace(pos, len, args)      删除s 中从下标pos 开始的len 个字符, 用args 指定的字符
                                   替换之;(在这个版本中, args 不能为b2, e2)
    s.replace(b, e, args)          删除迭代器b 和e 标记的范围内的所有字符, 用args 替换之;
                                   (在这个版本中, args 不能为s2, pos2, len2)
                                   注:   除特殊声明, 上述所有操作都返回的s 引用 .
    -------------------------------------------------------------------------------
                         ******     append 和 replace 操作的参数: args    ******
    -------------------------------------------------------------------------------
    s2                    string 类型字符串s2 ;
    s2, pos2, len2        字符串s2 中从下标pos2 开始的len2 个字符;
    cp                    指针cp 指向的以空字符结束的数组;
    cp, len2              cp 指向的以空字符结束的数组中前len2 个字符;
    n, c                  字符c 的n 个副本;
    b2, e2                迭代器b2 和e2 标记的范围内的所有字符.
    -------------------------------------------------------------------------------
                                     003.   string 对象的子串操作
    -------------------------------------------------------------------------------
    s.substr(pos, n)      返回一个string 类型的字符串, 它包含s 中从下标pos 开始的n 个字
                          符;
    s.substr(pos)         返回一个string 类型的字符串, 它包含s 中从下标pos 开始到s 末尾的
                          所有字符;
    s.substr()            返回s 的副本.
    -------------------------------------------------------------------------------

                                       string 类型的查找操作
    -------------------------------------------------------------------------------
    s.find(args)                 在s 中查找args 的第一次出现;
    s.rfind(args)                在s 中查找args 的最后一次出现;
    s.find_first_of(args)        在s 中查找args 的任意字符的第一次出现;
    s.find_last_of(args)         在s 中查找args 的任意字符的最后一次出现;
    s.find_first_not_of(args)    在s 中查找第一个不属于args 的字符;
    s.find_last_not_of(args)     在s 中查找最后一个不属于args 的字符;
    -------------------------------------------------------------------------------
                            ******     find 操作的参数: args    ******
    -------------------------------------------------------------------------------
    c, pos          在s 中, 从下标pos 标记的位置开始, 查找字符c, pos 的默认值为0 ;
    s2, pos         在s 中, 从下标pos 标记的位置开始, 查找string 对象s2, pos 的默认值为
                    0 ;
    cp, pos         在s 中, 从下标pos 标记的位置开始, 查找指针cp 所指向的C 风格字符串.
                    pos 的默认值为0 ;
    cp, pos, n      在s 中, 从下标pos 标记的位置开始, 查找指针cp 所指向数组的前n 个字符.
                    pos 和 n 无默认值;
    ------------------------------------------------------------------------------
    string name("AnnaBelle");
    string::size_type pos1= name.find("Anna");   // pos1= 0 ;
   
    string numerics("0123456789");
    string name("r2d2");
    string::size_type pos= name.find_first_of(numerics); // pos= 1 ;
    string::size_type pos= 0;
    while((pos= name.find_first_of(numerics, pos)) != string::npos)
    {
        cout<<"found number at index: "<<pos<<" elements is "<<name[pos]<<endl;
        ++pos;
    }
    string numbers("0123456789");
    string dept("03714p3");
    string::size_type pos= dept.find_first_not_of(numbers); // pos= 5 ;
    string river("Mississippi");
    string::size_type first_pos= river.find("is"); // return 1 ;
    string::size_type last_pos= river.find("is"); // return 4 ;
                                    004. string 类型的 compare 操作
    -------------------------------------------------------------------------------
    s.compare(s2)                        比较s 和s2 ;
    s.compare(pos1, n1, s2)              让s 中从pos1 下标位置开始的n1 个字符与s2 作比
                                         较;
    s.compare(pos1, n1, s2, pos2, n2)    让s 中从pos1 下标位置开始的n1 个字符与s2 中从
                                         pos2 下标位置开始的n2 个字符做比较;
    s.compare(cp)                        比较s 和cp 所指向的以空字符结束的字符串;
    s.compare(pos1, n1, cp)              让s 中从pos1 下标位置开始的n1 个字符与cp 指向字
                                         符串作比较;
    s.compare(pos1, n1, cp, n2)          让s 中从pos1 下标位置开始的n1 个字符与cp 指向字
                                         符串的前n2 个字符作比较;
                               
                                   s1 > s2 为正;   s1 == s2 为零;   s1 < s2 为负.
    -------------------------------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值