您的位置:首页 > 编程语言 > C语言/C++

C++ 中string.find() 函数的用法总结

2013-12-22 20:33 453 查看
本文章转载自:http://blog.csdn.net/yushuai007008/article/details/7051385

#include<string>

#include<iostream>

usingnamespacestd;

voidmain()

{

[cpp]
viewplaincopyprint?

////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]
viewplaincopyprint?

//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]
viewplaincopyprint?

//从字符串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]
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++;
}

//查找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;

//查找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;
}

//反向查找,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,这是一个很大的数,其值不需要知道。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: