C++ 中string.find() 函数的用法总结
2013-12-16 13:18
507 查看
include<string>
#include<iostream>
usingnamespacestd;
////find函数返回类型size_type
strings("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i");
stringflag;
string::size_typeposition;
//find函数返回jk在s中的下标位置
position=s.find("jk");
if(position!=s.npos)//如果没找到,返回一个特别的标志c++中用npos表示,我这里npos取值是4294967295,
{
cout<<"positionis:"<<position<<endl;
}
else
{
cout<<"Notfoundtheflag"+flag;
}
[cpp]
viewplaincopyprint?
//find函数返回flag中任意字符在s中第一次出现的下标位置
flag="c";
position=s.find_first_of(flag);
cout<<"s.find_first_of(flag)is:"<<position<<endl;
[cpp]
viewplaincopyprint?
//从字符串s下标5开始,查找字符串b,返回b在s中的下标
position=s.find("b",5);
cout<<"s.find(b,5)is:"<<position<<endl;
[cpp]
viewplaincopyprint?
//查找s中flag出现的所有位置。
flag="a";
position=0;
inti=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++;
}
[cpp]
viewplaincopyprint?
[cpp]
viewplaincopyprint?
//查找flag中与s第一个不匹配的位置
flag="acb12389efgxyz789";
position=flag.find_first_not_of(s);
cout<<"flag.find_first_not_of(s):"<<position<<endl;
[cpp]
viewplaincopyprint?
[cpp]
viewplaincopyprint?
//反向查找,flag在s中最后出现的位置
flag="3";
position=s.rfind(flag);
cout<<"s.rfind(flag):"<<position<<endl;
}
说明:
1.如果stringsub=”abc“;
strings=”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,这是一个很大的数,其值不需要知道。
http://blog.csdn.net/yushuai007008/article/details/7051385
#include<iostream>
usingnamespacestd;
////find函数返回类型size_type
strings("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i");
stringflag;
string::size_typeposition;
//find函数返回jk在s中的下标位置
position=s.find("jk");
if(position!=s.npos)//如果没找到,返回一个特别的标志c++中用npos表示,我这里npos取值是4294967295,
{
cout<<"positionis:"<<position<<endl;
}
else
{
cout<<"Notfoundtheflag"+flag;
}
////find函数返回类型size_type strings("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i"); stringflag; string::size_typeposition; //find函数返回jk在s中的下标位置 position=s.find("jk"); if(position!=s.npos)//如果没找到,返回一个特别的标志c++中用npos表示,我这里npos取值是4294967295, { cout<<"positionis:"<<position<<endl; } else { cout<<"Notfoundtheflag"+flag; }
[cpp]
viewplain
//find函数返回flag中任意字符在s中第一次出现的下标位置
flag="c";
position=s.find_first_of(flag);
cout<<"s.find_first_of(flag)is:"<<position<<endl;
//find函数返回flag中任意字符在s中第一次出现的下标位置 flag="c"; position=s.find_first_of(flag); cout<<"s.find_first_of(flag)is:"<<position<<endl;
[cpp]
viewplain
//从字符串s下标5开始,查找字符串b,返回b在s中的下标
position=s.find("b",5);
cout<<"s.find(b,5)is:"<<position<<endl;
//从字符串s下标5开始,查找字符串b,返回b在s中的下标 position=s.find("b",5); cout<<"s.find(b,5)is:"<<position<<endl;
[cpp]
viewplain
//查找s中flag出现的所有位置。
flag="a";
position=0;
inti=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++;
}
//查找s中flag出现的所有位置。 flag="a"; position=0; inti=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++; }
[cpp]
viewplain
[cpp]
viewplain
//查找flag中与s第一个不匹配的位置
flag="acb12389efgxyz789";
position=flag.find_first_not_of(s);
cout<<"flag.find_first_not_of(s):"<<position<<endl;
//查找flag中与s第一个不匹配的位置
flag="acb12389efgxyz789";
position=flag.find_first_not_of(s);
cout<<"flag.find_first_not_of(s):"<<position<<endl;
[cpp]
viewplain
[cpp]
viewplain
//反向查找,flag在s中最后出现的位置
flag="3";
position=s.rfind(flag);
cout<<"s.rfind(flag):"<<position<<endl;
}
//反向查找,flag在s中最后出现的位置
flag="3";
position=s.rfind(flag);
cout<<"s.rfind(flag):"<<position<<endl;
}
说明:
1.如果stringsub=”abc“;
strings=”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,这是一个很大的数,其值不需要知道。
相关文章推荐
- 小米智能手机的解锁初探--C++
- C/C++ Volatile关键词深度剖析
- 《Effective C++》学习笔记条款13 以对象管理资源
- 【转载】一步步将vim改造成C/C++开发环境(IDE)
- C++拷贝构造函数
- c++ 笔记
- C++ 让控制台运行到最后按下回车键才结束的3种方法
- C语言字符串变量初始化规范
- C++STL中vector容器 begin()与end()函数、front()与back()的用法
- 索引查找(索引查找、分块查找) C语言实现
- 设计模式C++实现(15)——观察者模式
- 设计模式C++实现(8)——代理模式
- 设计模式C++实现(4)——单例模式
- Windows下通过VC++6.0编译live555工程(可调试)
- 设计模式C++实现(1)——工厂模式
- [原创]一个简单的使用C++在运行时获取调用堆栈的类
- cpp二维数组的创建和删除
- Windows C/C++ 内存泄露检测
- C++数据类型转变
- ZT 初始化 const 成员和引用类型成员(C++)