zoukankan      html  css  js  c++  java
  • string 函数操作

    http://www.cppblog.com/Onway/articles/135481.html

    一,类型别名

    size_type

    无符号整型

    iterator

    迭代器类型

    const_iterator

    只读迭代器

    reverse_iterator

    逆序迭代器

    const_reverse_iterator

    只读逆序迭代器

    different_type

    足以存储两个迭代器差值的有符号整型

    value_type

    元素类型

    reference

    元素左值类型,是value_type&的同义词

    const_reference

    元素常量左值类型,是const value_type&的同义词

    二,构造函数

    string s1;

    默认构造函数

    string s2(s1);

    初始化为s1的副本

    string s3("value");

    初始化为字符串字面值的副本

    string s4(n,'c');

    初始化为n个字符为'c'的副本

    string s5(cp,n);

    初始化为cp所指数组的前n个字符的副本

    string s6(s1,pos);

    初始化为s1从下标pos开始的字符的副本

    string s7(s1,pos,len);

    初始化为s1从下标pos开始长度为len个字符的副本

    string s8(b,e);

    初始化为迭代器b和e标记范围内的元素的副本

    三,添加元素

    s.push_back('t');

    尾部添加值为t的字符

    s.insert(p,'t');

    迭代器p前面插入值为't'的字符,返回指向新字符的迭代器

    s.insert(p,n,'t');

    迭代器p前插入n个值为't'的字符,返回void

    s.insert(p,b,e);

    迭代器p前插入由迭代器b和e标记范围的元素

    s.insert(pos,n,'t');

    在下标pos前插入n个值为't'的字符

    s.insert(pos,s2);

    在下标pos前插入string对象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.erase(p);

    删除迭代器p所指向的元素。返回指向被删元素后一个元素的迭代器

    s.erase(b,e);

    删除由迭代器b和e标记范围内的元素,返回指向被删元素段后一个元素的迭代器

    s.pop_back();

    删除最后一个元素。返回void。VS2010支持。

    s.clear();

    删除所有元素,返回void

    五,长度大小

    s.size();

    返回s中元素个数,类型为size_type

    s.max_size();

    返回s中可容纳最多元素个数,类型为size_type

    s.empty();

    返回s中元素是否为0的布尔值

    s.resize(n);

    调整s的长度大小,使其能容纳n个元素

    如果n<s.size(),则删除多余元素,否则,添加采用值初始化的新元素

    s.resize(n,'t');

    调整s的长度大小,使其能容纳n个值为't'的元素

    s.capacity();

    返回在s需要分配更多存储空间前能存储的元素个数,返回类型为size_type

    s.reserve(n);

    设置s预留n个元素的存储空间,返回void

    六,赋值操作

    s1=s2;

    删除s1的所有元素,将s2元素复制给s1

    s1.swap(s2);

    将s1和s2的内容交换

    s.assign(b,e);

    重设s的元素:将迭代器b和e标记范围的元素复制给s

    s.assign(n,'t');

    重设s为存储了n个值为't'的对象

    s.assign(s2);

    不解析

    s.assign(s2,pos2,len);

    不解析

    s.assign(cp,len);

    不解析

    s.assign(cp);

    不解析

    七,子串操作

    s.substr(pos,n);

    返回string类型字符串,包含从下表pos开始的n个字符

    s.substr(pos);

    不解析

    s.substr();

    返回s的副本

    s.c_str();

    返回s的c风格字符串

     

     

     

     

     

    八,string对象修改

    操作函数:(args在参数表定义)

    s.append(args);

    将args串接在s后面。返回s的引用

    s.replace(pos,len,args);

    删除s中从下标开始的len个字符,用args替代之。返回s的引用。

    此版本中,args不能为b2,e2

    s.replace(b,e,args);

    删除迭代器b和e标记范围内所有的字符,用args替代之。返回s的引用。

    此版本中,args不能为s2,pos2,len2

    args参数定义:

    s2

    string 类型的字符串s2

    s2,pos2,len2

    string类型的字符串s2中从下标pos2开始的len2个字符

    cp

    指针cp指向的以空字符结束的数组

    cp,len2

    cp指向的数组中的前len2个字符

    n,'t'

    字符't'的n个副本

    b2,e2

    迭代器b2和e2标记范围内的所有字符

    九,string查找操作

    操作函数:(args在参数表格定义,返回类型都是size_type或是string::nops)

    注意:find和rfind是串精确查找,而find_first和find_last是单个字符查找。

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

    agrs参数:

    't',pos

    从下标pos开始,查找字符't',pos的默认值为0

    s2,pos

    从下标pos开始,查找string对象s2,pos默认值为0

    cp,pos

    查找cp所指C风格字符串,pos默认值为0

    cp,pos,n

    从下标pos开始,查找cp所指数组前n个字符

    十,string对象比较(大于返回正数,小于返回负数,等于返回0)

    s.compare(s2);

    比较s和s2

    s.compare(pos1,n1,s2);

    让s中从pos下标开始的n1个字符跟s2做比较

    s.compare(pos1,n1,s2,pos2,n2);

    让s中从pos1下标开始的n1个字符与s2中从pos2开始的n2个字符比较

    s.compare(cp);

    cp,C风格字符串

    s.compare(pos1,n1,cp);

    不解析

    s.compare(pos1,n1,cp,n2);

  • 相关阅读:
    golang删除数组某个元素
    golang用通道实现信号量,控制并发个数
    什么是ScaleIO中的forwards rebuild和backwards rebuild?
    SQL Server中的database checkpoint
    如何将thick provision lazy zeroed的VMDK文件转换为thick provision eager zeroed?
    LoadTestAgentResultsLateException in VS2010
    SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
    VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
    SQL Server AlwaysOn Setup Step-By-Step Guide
    TPC-E在populate测试Database时需要注意的一些事项
  • 原文地址:https://www.cnblogs.com/zxj015/p/2740224.html
Copyright © 2011-2022 走看看