C++ String常用函数

一,类型别名

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);

不解析

C++ string 常用函数的更多相关文章

  1. C#string常用函数总结

    补充:             1:在C语言里 char占1个字节 而在C#,Java里char占两个字节 数据库里char 中汉占两个字节 字母数字占一个字             2:string ...

  2. 【STL】string 常用函数

    string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...

  3. 【转】string常用函数

    原文地址:http://hi.baidu.com/baowup/blog/item/3a27465c86d71546faf2c066.html/cmtid/de1ef3f0de7554a0a40f52 ...

  4. String 类的实现(5)String常用函数

      2 #include<iostream> 3 #include<stdio.h> 4 #include<assert.h> 5 #include <iom ...

  5. stl string常用函数

    string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...

  6. C++中的string常用函数用法

    标准c++中string类函数介绍   注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而 ...

  7. c++标准库中的string常用函数总结《转》

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  8. STL string 常用函数(转)

    string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...

  9. c++中的string常用函数用法总结!

    标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作 ...

随机推荐

  1. www的iptables实例

    #!/bin/bash export PATH=/sbin:/usr/sbin:/bin:/usr/bin #加载相关模块 modprobe iptable_nat modprobe ip_nat_f ...

  2. uni-app学习记录04-轮播图和滑屏图片

    <template> <view> <!-- 轮播图视图 swiper-item是每页的元素 --> <swiper :indicator-dots=&quo ...

  3. tomcat access日志

    每次看access log都会记不住pattern里的各个标识代表的什么意思,记录下,备忘! tomcat的access log是由实现了org.apache.catalina.AccessLog接口 ...

  4. JPA多对一单向关联

    在实际开发过程中,JPA多对一单向关联是使用最多的关联方式. 下面是订单与订单项的配置关系. 订单(Order):一的一方,不进行任何配置 @Entity @Table(name="orde ...

  5. Vue实现同级组件的通信

    一.文件结构 二.vue.js 打开此链接 https://cdn.bootcss.com/vue/2.6.10/vue.js 复制粘贴页面的所有内容 三.index.html <!DOCTYP ...

  6. 2019-10-19-dotnet-给MatterMost订阅RSS博客

    title author date CreateTime categories dotnet 给MatterMost订阅RSS博客 lindexi 2019-10-19 08:12:36 +0800 ...

  7. [Ramda] Handle Errors in Ramda Pipelines with tryCatch

    Handling your logic with composable functions makes your code declarative, leading to code that's ea ...

  8. UVA 11400"Lighting System Design"

    传送门 错误思路 正解 AC代码 参考资料: [1]:https://www.cnblogs.com/Kiraa/p/5510757.html 题意: 现给你一套照明系统,这套照明系统共包含 n 种类 ...

  9. 天河2 程序 version GLIBCXX_3.4.21 not found 解决方法

    本文告诉大家在 天河2 运行程序时发现 version GLIBCXX_3.4.21 not found 如何修复 我在天河2运行一个程序报错 version `GLIBCXX_3.4.21' not ...

  10. tensorflow在文本处理中的使用——skip-gram & CBOW原理总结

    摘自:http://www.cnblogs.com/pinard/p/7160330.html 先看下列三篇,再理解此篇会更容易些(个人意见) skip-gram,CBOW,Word2Vec 词向量基 ...