C++如何实现python中的startswith和endswith
程序员文章站
2022-07-16 15:17:58
...
C++如何实现python中的startswith和endswith
#include<iostream>
#include <string>
using namespace std;
void AdjustIndices(int& start, int& end, std::string::size_type len)
{
len = (int)len;
//如果end超出字符串长度
if (end > len)
end = len; //则以字符串长度为准
else if (end < 0)
{//如果end为负数
end += len; //则先加上字符串长度
if (end < 0)//如果还是为负数
end = 0;//则为0
}
//如果start为负数
if (start < 0)
{
//则加上字符串长度,注意不是以0校准
start += len;
if (start < 0)//如果还是负数
start = 0;//才以0校准
}
}
int _string_tailmatch(const std::string& self, const std::string& substr, int start, int end, int direction)
{
int selflen = (int)self.size();
int slen = (int)substr.size();
const char* str = self.c_str();
const char* sub = substr.c_str();
//对输入的范围进行校准
AdjustIndices(start, end, selflen);
//字符串头部匹配(即startswith)
if (direction < 0)
{
if (start + slen > selflen)
return 0;
}
//字符串尾部匹配(即endswith)
else
{
if (end - start<slen || start>selflen)
return 0;
if (end - slen > start)
start = end - slen;
}
if (end - start >= slen)
//mcmcmp函数用于比较buf1与buf2的前n个字节
return !std::memcmp(str + start, sub, slen);
return 0;
}
bool endswith(const std::string& str, const std::string& suffix, int start = 0, int end = 2147483647)
{
//调用_string_tailmatch函数,参数+1表示字符串尾部匹配
int result = _string_tailmatch(str, suffix, start, end, +1);
return static_cast<bool>(result);
}
bool startswith(const std::string& str, const std::string& suffix, int start = 0, int end = 2147483647)
{
//调用_string_tailmatch函数,参数-1表示字符串头部匹配
int result = _string_tailmatch(str, suffix, start, end, -1);
return static_cast<bool>(result);
}
//上面均为startswith以及endswith的方法实现,可以直接复制粘贴
int main()
{
string a = "djaskdjasd";
bool result = startswith(a, "da");
cout << "result:" << result << endl;
bool result1 = startswith(a, "dj");
cout << "result1:" << result1 << endl;
bool result2 = endswith(a, "da");
cout << "result2:" << result2 << endl;
bool result3 = endswith(a, "sd");
cout << "result3:" << result3 << endl;
return 0;
}
- 运行结果如下
推荐阅读
-
OpenCV中的新函数connectedComponentsWithStats使用(python和c++实例)
-
Python中的文件和目录操作实现代码
-
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
-
如何在Python中实现goto语句的方法
-
python实现去除下载电影和电视剧文件名中的多余字符的方法
-
python3实现在二叉树中找出和为某一值的所有路径
-
Python中实现变量赋值传递时的引用和拷贝方法
-
C++实现LeetCode(34.在有序数组中查找元素的第一个和最后一个位置)
-
Python 实现引用其他.py文件中的类和类的方法
-
Python中elasticsearch插入和更新数据的实现方法