• c++ --string操作


    顺序容器--额外的string操作

      除了顺序容器共同的操作之外,string类型还提供了一些额外的操作。这些操作中大致可以分为两部分:

      1. 提供string类和C风格字符出租之间的相互转换

      2. 增加了允许我们用下标代替迭代器的版本。


    构造string的其他方法

    构造string的其他方法            
    n,len2和pos2都是无符号值              注意:需要给出pos的,在第二个参数给出                                                        
    string s(cp,n) s是cp 指向的数组中前n 个字符的拷贝。此数组至少应该包含n个字符
    string s(s2,pos2) s是string s2 从下标pos2 开始的字符的拷贝。若pos2>s2.size(),构造函数的行为未定义。
    string s(s2,pos2,len2)

    s是string s2 从下标pos2 开始len2 个字符的拷贝。若pos2 > s2.size(),构造函数的行为未定义。不管len2 的值是多少,

    构造函数至多拷贝s2.size()-pos2个字符。

       这些构造函数接受一个string 或一个const char* 参数,还接受(可选的)指定拷贝多少个字符的参数(pos2,len2)

    substr(pos,n) 操作

      substr操作返回一个string,它是原始string的一部分货全部的拷贝。可以传递给substr 一个可选的开始位置和计数值:

      string s("hello world");

       //返回一个string,包含s 中从pos 开始的n 个字符的拷贝。pos的默认值为0。n的默认值为s,size()-pos, 即拷贝从pos开始的所有字符

      string s1=s.substr(pos,n);   

    改变string的其他方法

    修改string 的操作       注意:需要制定pos的,在第一个参数给出    常用场景                                    
    s.assign(args) 将s 中的字符替换为args 指定的字符。返回一个指向s 的引用 替换s 中的所有内容
    s.append(args) 将args 追加到s末尾。返回一个指向s 的引用。 将新字符追加到s 末尾
    s.insert(pos,args)

    在pos 之前插入args 指定的字符。pos 可以使一个下标或一个迭代器。

    接受下标的版本返回一个指向s 的引用;接受迭代器的版本返回指向第一个插入字符的迭代器。

    在给定位置之前插入新字符
    s.replace(range,args)

    删除s 中range 内的字符,替换为args 指定的字符。

    range 或者是一个下标和一个长度,或者是一对指向s 的迭代器。返回一个指向s 的引用。

    删除指定范围字符,并插入新字符

    (新旧字符长度可以不一样长)

       新字符可以来自于:1. 另一个string;2. 一个字符指针(指向的字符数组);3. 一个花括号包围的字符列表。当字符来自于一个string 或一个字符指针时,我们可以传递一个额外的参数来控制是拷贝部分还是全部字符。例如,s.insert(0, s2, 0, s2.size());    //在s[0]之前插入s2 中s2[0] 开始的s2.size() 个字符。

      并不是每个函数都支持所有形式的参数。例如,insert 就不支持下标和初始化列表参数。类似的,如果我们希望用迭代器指定插入点,就不能用字符指针指定新字符的来源。

    string 搜索操作

      string 类提供了6个不同的搜索函数,每个函数都有4个重载版本。每个搜索操作都返回一个string::size_type (无符号类型)值,表示匹配发生位置的下标。如果未找到,返回npos (初始化为-1)。

      

    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 中的字符

    args 必须是以下形式之一

    注意:需要给出pos的,在第二个参数给出
    c, pos 从s 中位置pos开始查找字符c. pos 默认为0
    s2, pos

    从s 中位置pos 开始查找字符串s2。 pos默认为0

    cp, pos

    从s 中位置pos 开始查找指针cp 指向的以空字符结尾的C 风格字符串。

    pos 默认为0

    cp, pos, n

    从s 中位置pos 开始查找指针cp 指向的数组的前n 个字符。

    pos 和n 无默认值

     compare函数

      标准库string 类型提供了一组compare 函数,类似C 标准库的strcmp 函数,根据s 是等于、大于还是小于参数指定的字符串,s.compare(args) 返回0,正数或负数。

      根据参数的不同,compare函数有6个重载版本。具体args 形式参见c++ primer P327,表9.15.

    数值转换

      新标准引入了多个函数,可以实现数值数据与标准库string之间的转换

      具体转换函数,参见c++primer P328,表9.16.


  • 相关阅读:
    hdu1238 Substrings
    CCF试题:高速公路(Targin)
    hdu 1269 迷宫城堡(Targin算法)
    hdu 1253 胜利大逃亡
    NYOJ 55 懒省事的小明
    HDU 1024 Max Sum Plus Plus
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1257 最少拦截系统
    HDU 1069 Monkey and Banana
    HDU 1104 Remainder
  • 原文地址:https://www.cnblogs.com/cygalaxy/p/7077499.html
Copyright © 2020-2023  润新知