匹配一个字符串和另一个字符串的子串的方法

//匹配一个字符串和另一个字符串的子串的方法
#include<iostream>
#include<string>
using namespace std;
int main(){
   string str1;
   string str2;
   int count=0;
   getline(cin,str1);//可输入多行
   getline(cin,str2);//可输入多行
   int str1lgth=str1.size();
   int str2lgth=str2.size();
   string s;
   for(int i=0;i<str2lgth-str1lgth+1;i++){
       s=str2.substr(i,str1lgth);
       cout<<str1<<"=="<<s<<"   "<<(str1==s)<<endl;
       if(str1==s){++count;}
   }
   cout<<count;
   system("pause");
   return 0;
}
 
在C++中,你可以使用多种方法来判断一个字符串是否属于(即作为子串存在于)另一个字符串。以下是几种常用的方式: 1. **`find` 函数**:`std::string::find(const string& str_to_search)` 函数会在原字符串中查找指定子串,如果找到则返回子串起始位置(从0开始),否则返回`npos`(非定位)。例如: ```cpp if (str.find(substring) != std::string::npos) { // 子串存在 } ``` 2. **`contains` 集合库函数(C++20以后)**:如果你使用了C++20标准或者某些库提供的功能,比如Boost,可以用`std::ranges::contains`: ```cpp if (std::ranges::contains(str, substring)) { // 子串存在 } ``` 3. **正则表达式**:如果你需要更复杂的模式匹配,可以使用`std::regex`库,通过`std::regex_search`检查是否匹配特定模式: ```cpp std::smatch match; if (std::regex_search(str, match, std::regex(substring))) { // 子串存在 } ``` 4. **`std::equal` 和 `std::begin`**:如果字符串较长,并且知道子串的位置,也可以直接逐字符比较: ```cpp auto it = str.begin() + start_of_substring; if (it != str.end() && *it++ == substring[0] && ... /* 比较整个子串 */) { // 子串存在 } ``` 5. **`std::string_view`**(C++17以后):对于只读字符串视图,可以直接查看子串范围是否存在: ```cpp if (str.contains(substring)) { // 子串存在 } ``` 每种方法都有其适用场景,根据实际需求选择最适合的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值