string find简析
#include <string>
#include <iostream>
using namespace std;
void main()
{
- ////find函数返回类型 size_type
- string s("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i");
- string flag;
- string::size_type position;
- //find 函数 返回jk 在s 中的下标位置
- position = s.find("jk");
- if (position != s.npos) //如果没找到,返回一个特别的标志c++中用npos表示,我这里npos取值是4294967295,
- {
- cout << "position is : " << position << endl;
- }
- else
- {
- cout << "Not found the flag" + flag;
- }
- //find 函数 返回flag 中任意字符 在s 中第一次出现的下标位置
- flag = "c";
- position = s.find_first_of(flag);
- cout << "s.find_first_of(flag) is : " << position << endl;
- //从字符串s 下标5开始,查找字符串b ,返回b 在s 中的下标
- position=s.find("b",5);
- cout<<"s.find(b,5) is : "<<position<<endl;
- //查找s 中flag 出现的所有位置。
- flag="a";
- position=0;
- int i=1;
- while((position=s.find_first_of(flag,position))!=string::npos)
- {
- //position=s.find_first_of(flag,position);
- cout<<"position "<<i<<" : "<<position<<endl;
- position++;
- i++;
- }
- //查找flag 中与s 第一个不匹配的位置
- flag="acb12389efgxyz789";
- position=flag.find_first_not_of (s);
- cout<<"flag.find_first_not_of (s) :"<<position<<endl;
- //反向查找,flag 在s 中最后出现的位置
- flag="3";
- position=s.rfind (flag);
- cout<<"s.rfind (flag) :"<<position<<endl;
- }
说明:
1. 如果string sub = ”abc“;
string s = ”cdeabcigld“;
s.find(sub) , s.rfind(sub) 这两个函数,如果完全匹配,才返回匹配的索引,即:当s中含有abc三个连续的字母时,才返回当前索引。
s.find_first_of(sub), s.find_first_not_of(sub), s.find_last_of(sub), s.find_last_not_of(sub) 这四个函数,查找s中含有sub中任意字母的索引。
2. 如果没有查询到,则返回string::npos,这是一个很大的数,其值不需要知道。
string find简析的更多相关文章
- RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- Android 启动过程简析
首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...
- Android RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- Java Annotation 及几个常用开源项目注解原理简析
PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...
- 【ACM/ICPC2013】POJ基础图论题简析(一)
前言:昨天contest4的惨败经历让我懂得要想在ACM领域拿到好成绩,必须要真正的下苦功夫,不能再浪了!暑假还有一半,还有时间!今天找了POJ的分类题库,做了简单题目类型中的图论专题,还剩下二分图和 ...
- SimpleDateFormat使用简析
title: SimpleDateFormat使用简析 date: 2016-07-11 11:48:20 tags: Java SimpleDateFormat --- [转载自博客:http:// ...
- zxing二维码扫描的流程简析(Android版)
目前市面上二维码的扫描似乎用开源google的zxing比较多,接下去以2.2版本做一个简析吧,勿喷... 下载下来后定位两个文件夹,core和android,core是一些核心的库,android是 ...
- AFNetworking封装思路简析
http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 ...
- [转载] Thrift原理简析(JAVA)
转载自http://shift-alt-ctrl.iteye.com/blog/1987416 Apache Thrift是一个跨语言的服务框架,本质上为RPC,同时具有序列化.发序列化机制:当我们开 ...
随机推荐
- Tab 插件(一)
前言 使用Jquery封装插件,使代码复用不需要每个功能重新编写代码只需修改传入参数. jQuery 插件常见到有类开发 和对象开发模式, 在下边介绍两种模式使用,初次编写,有误拍砖. jQuery ...
- Hibernate通过自编写Sql修改
@Override public void updateTemMsg(String ticket,String time) { String sql="UPDATE INTER_TEMPTO ...
- python—datetime time 模板学习
写在前面:本人在学习此内容是通过 https://www.cnblogs.com/pycode/p/date.html 文章学习! 时间模块——time python 中时间表示方法有:时间戳_:格式 ...
- spark RDD运算机制
- python 层次索引交换级别以及排序问题
- maya2018安装失败如何卸载重装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- 性能测试工具LoadRunner14-LR之Controller 简介
当虚拟用户开发完成之后,使用Controller将这个执行脚本的用户从单用户转化为多用户,从而模拟大量用户操作,进而形成负载.(多用户单循环,多用户多循环)我们需要对负载模拟的方式和特征进行配置. 场 ...
- [转]jQuery TextBox Water Mark with asp.net
本文转自:http://naspinski.net/post/jQuery-TextBox-Water-Mark-with-aspnet.aspx I stole majority of this c ...
- php 关于时间的函数
//返回1970年1月1日零点以来的秒数. //定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. time(); ...
- MakeFile基本使用
MakeFile Making makefile demo # Run this line when useing `make` command # default is the target whi ...