string库

1、size()与length()

字符串长,结果相同

string s;

s.length(); //s.length()-1是最后一个字符的下标,而不是'\0'

for(i=0;i<s.length()-1;i++)
cout<<s[i]<<endl; //可以输出每个字符

s.size();

2、find(char ch)

用于string类型

在字符串中找字符ch,没找到返回-1,找到则返回下标;也可以查找一个子串,返回子串(首字符)的下标

string s;

if(s.find('a')==-1)

  return false;

没在s中找到字符'a'的话,返回false。

从指定位置处查找

string s;
cin>>s;
if(s.find('a',5)!=-1)//从下标为5处(包含s[5])开始查找
return true;

如果s中有多个相同字符,而要分别输出它们的位置

string s;
cin>>s;
int pos=0;//记录位置 while((pos=s.find('a',pos))!=-1)
cout<<"position"<<pos++<<";";//每次要从上一个位置之后开始查找,不然就会一直输出之前的位置,所以pos++表明从之后开始查找

参考:https://www.cnblogs.com/wkfvawl/p/9429128.html

3、统计字符串长度

strlen(ch):不包含末尾的0;

另外也可用递归的方式不用strlen统计字符串长度

//用递归求字符串长度,字符串都以'\0'结尾
int strlen1(char * ch){
if(*ch!='\0')return strlen1(ch+1)+1;
else return 0

4、提取子串

string s="abcdef"

cout<<s.substr(pos,len)

从指定位置(下标)pos开始,长度为len的子串;

如果没有len或者len长度超过了字符串长,会一直延续到结尾;

如果pos和len都没有,则默认复制整串

PS:第二个参数是子串长度,而不是结束位置!

5、字符串比大小

strcmp(str1,str2)

str1与str2必须是char *或者char []而不能是string类型

根据每个字符的ASC码依次比较str1与str2中的每个字符,直到第一个不相同的字符或者其中一个字符串到尾'\0'

<0  str1小于str2

=0 相等

>0 str1大于str2

string类型的字符串比大小,用string的成员函数compare()

string s1,s2;

s1.compare(s2);

<0 s1<s2

=0 s1=s2

>0 s1>s2

6、字符串复制

strcpy(a,b) 将b复制到a中

algorithm库

7、sort排序,可以按照先后条件进行排序

sort(start,end,cmp)

start为开始的地址,如果不是指针类型的要用引用符号'&'得到地址

end为最后一个地址,即如果是A[8]数组,end应该是A[8]而不是A[7],所以此处的end是终结地址

cmp为排序方式,默认升序

经常自己定义第三个参数即cmp函数,以达到需要的目的,cmp函数返回一个布尔值,其中必须包含逻辑表达式(即比大小的方式)

举个例子:

class Student {
public:
char name[100];
int age;
float grade;
};
bool cmp(Student S1, Student S2) {
//小于号 表示用从小到大的方式排序
if (S1.grade != S2.grade) return S1.grade<S2.grade;
else if (strcmp(S1.name, S2.name) != 0) return strcmp(S1.name, S2.name)<0;
else return S1.age<S2.age;
}
int main() { int i = 0;
  //输入N个Student对象的值
int N;
cin >> N;
Student *S = new Student[N];
for (i = 0; i<N; i++)
cin >> S[i].name >> S[i].age >> S[i].grade;

sort(&S[0], &S[N], cmp); for (i = 0; i<N; i++)
cout << S[i].name << ' ' << S[i].age << ' ' << S[i].grade << endl;
delete[] S;
}

上述函数就是分别按照grade,name,age的大小关系进行排序,当grade相同时,按name的ascii码大小排序,name也想通就按照年龄从小到大排序

参考:https://www.cnblogs.com/epep/p/10959627.html

8、erase函数,用于一个string或者迭代器类型(iterator)的对象

用法:3种

erase(int pos,n):抹去pos位置(int类型)处n个元素

erase(iterator pos):抹去pos位置(迭代器类型)处一个元素

erase(iterator start,iterator end):抹去从start到end处的元素,这里的start与end都以迭代器的形式表现

由于string类型也是一种容器,可以构建迭代器,所以这里统一用string来举例

#include<string>
#include<iostream>
#include<Windows.h>
using namespace std;
int main() {
string S("This is an example"); string::iterator it; S.erase(9, 1);
cout << S << endl; //输出 This is a example it = S.begin(); S.erase(it + 10);
cout << S << endl; //输出 This is a xample S.erase(it, it + 4);
cout << S << endl; //is a xample system("pause"); return 0;
}

erase与find函数配合,可以达到删除一个字符串中特定字符的目的:https://www.cnblogs.com/LesBlog/p/12569652.html

参考:https://blog.csdn.net/weixin_41969587/article/details/82587372

9、字符串颠倒

三种方法:

1、

cin>>s;
int i=0;
string res("");
for(i=s.length()-1;i>=0;i--)
res+=s[i];
cout<<res<<endl;

2、strrev()函数

string库,用于char[]数组

int main(){
char c[]="abcde";
strrev(c);
cout<<c<<endl;
return 0;
}
//结果 edcba

3、algorithm库的reverse()函数,用于string类型

reverse()函数不只可以用于字符串颠倒,还可以用于vector容器类型的颠倒

int main(){
string S("abcdef");
reverse(S.begin(),S.end());
cout<<S<<endl;
//结果 fedcba
}

参考:https://www.cnblogs.com/bk76120/p/10556037.html

C++ 部分函数的更多相关文章

  1. javascript中的部分函数应用

    这篇文章写的很全面,不过也啰嗦:http://benalman.com/news/2012/09/partial-application-in-javascript/ 这篇文章是神级运用:http:/ ...

  2. OS.path部分函数的介绍

    OS.path模块中的部分函数的介绍 os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix( ...

  3. JavaScript进阶(五)js中取小数整数部分函数

    js中取小数整数部分函数 丢弃小数部分,保留整数部分 js:parseInt(7/2) 向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 四舍五入 js: Math.round(7 ...

  4. js中取小数整数部分函数;取小数部分

    1.丢弃小数部分,保留整数部分 parseInt(23.56); 结果:23 2.向上取整,有小数就整数部分加1 Math.ceil(23.56) 结果:24 3,四舍五入. Math.round(2 ...

  5. Scala偏函数与部分函数

    函数 1.部分函数 部分应用函数(Partial Applied Function)是缺少部分参数的函数,是一个逻辑上概念. def sum(x: Int, y: Int, z: Int) = x + ...

  6. Hive部分函数解析

    Hive部分函数解析 Hive里的exists ,in ,not exists ,not in 相关函数 表数据准备: 1.选择指定数据库 eg:  use bg_database1; 2. 创建表 ...

  7. IDEA下Maven项目搭建踩坑记----3.最长的bug,最简单的错误。同一类中,部分函数的@AutoWired注入的对象失效

    这个错误绝对是我写到现在为止最傻X的一个错误,先上图 问题: 出了一个特别长的错误,大致的意思就是mapper.xml文件注入Dao层的时候失败. 解决: 查看一下错误的位置→ 找到Dao层 找到错误 ...

  8. Macos系统编译percona及部分函数在Macos系统上运算差异

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 本文来源:原创投稿 GreatSQL社区原创内容未经授权不得随意使用,转载请联系 ...

  9. Oracle 部分函数使用说明

    oracle有些函数可能我知道是什么作用,但是具体其实说不清楚,这里是我这几天看到的函数使用方法及说明,记录一下,以后看看 --1.replace('str',oldVal,newVal)替换功能方法 ...

  10. MySQL 部分函数使用

    1.DATE_ADD 参考博客:MySQL日期时间函数大全 转 例:DATE_ADD(date,INTERVAL expr type) 2.日期转字符串 DATE_FORMAT 参考博客:MYSQL中 ...

随机推荐

  1. 使用Hot Chocolate和.NET 6构建GraphQL应用(3) —— 实现Query基础功能

    系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在本文中,我们通过一个简单的例子来看一下如何实现一个最简单的GraphQL的接口. 实现 引入Hot Cho ...

  2. IDEA导入建立图标类型的包失败

    开发安卓app时当我导入下面的包时,显示包名变红,并且包不可用,这可能与你建立的项目类型有关. MPAndroidChart包是建立图标类型的包,需要自己下载并添加进libs目录 解决方案是在libs ...

  3. https的页面内嵌入http页面报错的问题

    1.https的页面内嵌入http页面报错 在HTTPS的页面上嵌入http的页面时,浏览器会直接报错.比如在HTTPS页面上用 iframe 直接嵌入一个 http 页面,比如我们可以在百度上直接嵌 ...

  4. Mysql 返回JSON值属性的函数 (五)

    本节中的函数返回JSON值的属性. JSON_DEPTH(json_doc) 返回JSON文档的最大深度.NULL如果参数为,则 返回 NULL.如果参数不是有效的JSON文档,则会发生错误. 一个空 ...

  5. Java高级特性——反射

    感谢原文作者:peter_RD_nj 原文链接:https://www.jianshu.com/p/9be58ee20dee 注意:同一个类在JVM中只存在一份字节码对象 概述 定义 JAVA反射机制 ...

  6. js中全局和局部变量的区别

    2 3 4 5 6 7 8 9 10 <script type="text/javascript"> var a = 1; function hehe() {      ...

  7. 异步回调实现- Guava Retryer

    为什么要使用重试利器Retryer 在实际开发中我们经常会遇到需要轮询查询一个接果,实现轮询的方式有很多种,我们经常要写许多代码,有时还会怕写出的代码有bug,如果已经有轮子了,我们就没必要重复造轮子 ...

  8. Linux发行版·常见Linux系统下载

    本专题页汇总最受欢迎的Linux发行版基本介绍和下载地址,如果您是一位刚接触Linux的新手,这里的介绍可能对您有所帮助,如果您是以为Linux使用前辈,也可以在评论处留下您宝贵意见和经验,以便让更多 ...

  9. -bash: ./bin/shutdown.sh: /bin/bash^M: bad interpreter: 没有那个文件或目录

    为什么会出现这种问题: 1.这个问题的原因就是我们放在服务器的脚步类型是dos,而不是unix类型,所以会导致出现(-bash: ./bin/shutdown.sh: /bin/bash^M: bad ...

  10. 反射(reflection),通过反射创建对象

    简单尝试: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public cl ...