C++子字符串查找及提取

子字符串查找与提取


 strstr()与find()均可用于字符串的查找,一个返回的是内存的位置,一个却是目标字符在字符串中的下标。

strstr()

函数原型:

extern char *strstr(char *str1, const char *str2);

 str1: 被查找目标
 str2: 要查找对象
 返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

find()

 string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,那么会返回一个特别的标记npos。(返回值可以看成是一个int型的数)。
 std::string的查找函数:
 find()
 rfind() //返回子字符串最后一次出现在字符串中的索引位置
 find_first_of() //
 find_first_not_of()
 find_last_of()
 find_last_not_of()
 这些操作全都返回 string::size_type 类型的值。

查找

1 #include<cstring>
2 #include<cstdio>
3 #include<iostream>
4 using namespace std;
5 int main()
6 {
7     find函数返回类型 size_type 
8     string s("1a2b3c4d5e6f7jkg8h9i1a2b3c4d5e6f7g8ha9i");
9     string flag;
10     string::size_type position=std::string::npos;/*std::string::npos是一个常熟,它等于size_type类型可以表示的最大值,用来表示一个不存在的位置,类型一般是std::container_type::size_type。*/
11     //find 函数 返回jk 在s 中的下标位置
12     position = s.find("jk");
13     if (position != s.npos)  //如果没找到,返回一个特别的标志c++中用npos表示,我这里npos取值是4294967295,
14     {
15         printf("position is : %d\n" ,position);
16     }
17     else
18     {
19         printf("Not found the flag\n");
20     }
21 }

提取

 提取某个字符串中某两个子字符串之间的字符串(返回“abcdefg”)

1 std::string strPath = "abcdefgabcDEFG"
2 std::string::size_type start = std::string::npos;
3 std::string::size_type end= std::string::npos;
4 start = strPath.find("abc");//返回"abc"字符串首次出现的首字母的下标
5 end = strPath.find_last_of("abc", start+1);//从start后一位开始查找
6 if(start!=-1 && end != -1)
7 {
8     strPath = strPath.substr(start, end-start);//截取自start位置开始,该位置后end-start位数的子字符串
9 }
return strPath;
C语言中的find函数有多种形式,常用的有substr()、find()、find_first_of()和find_first_not_of()函数。 - substr()函数用于提取字符串中的字符串。它的语法是s.substr(pos, len),其中s是原字符串,pos是字符串的起始位置,len是字符串的长度。 - find()函数用于在字符串查找字符串,并返回第一次出现的位置。它的语法是s.find(substring, pos),其中s是原字符串,substring是要查找字符串,pos是开始查找的位置。如果找到了字符串,返回第一次出现的位置;如果找不到,返回string::npos。 - find_first_of()函数用于在字符串查找第一个与指定字符集中的任意一个字符匹配的字符,并返回其位置。它的语法是s.find_first_of(chars, pos),其中s是原字符串,chars是要匹配的字符集,pos是开始查找的位置。如果找到了匹配的字符,返回其位置;如果找不到,返回string::npos。 - find_first_not_of()函数用于在字符串查找第一个与指定字符集中的任何一个字符都不匹配的字符,并返回其位置。它的语法是s.find_first_not_of(chars, pos),其中s是原字符串,chars是要排除的字符集,pos是开始查找的位置。如果找到了不匹配的字符,返回其位置;如果找不到,返回string::npos。 所以,c find字符串的具体实现需要根据具体的需求来选择合适的函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C++提取字符串](https://blog.csdn.net/u014421313/article/details/127154449)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值