[杂项] C++从一个序列查找子序列的方法
前言
最典型的就是在一个字符串中查找对应的子字符串了,一开始我是以为C++没有类似的函数,其实是有的只不过不在 std::string 里面,而是在算法里面 std::search
#include <iostream>
#include <algorithm>
int main()
{
std::string x = "sticky quesTion";
std::string y = "sti";
auto index = std::search(x.begin() + 1, x.end(), y.begin(), y.end(), [](const char left, const char right) {
if (std::toupper(left) == std::toupper(right)) {
return true;
}
else {
return false;
}
});
if (index != x.end()) {
std::cout << "find" << std::endl;
int number = std::distance(x.begin(), index);
std::cout << "occur at " << number << std::endl;
}
else {
std::cout << "can not find" << std::endl;
}
return 0;
}
无需多言,你想要的效果都有
std::search
但是对于分割字符串的算法 splite C++17是真的没有