是否可以以某种方式将多个字符串传递给 string::find 函数?
例如,要查找一个字符串,我可能会使用这个:
str.find("a string");
我想做的是这样的:
str.find("a string" || "another string" || "yet another string")
并让函数返回三个字符串中任何一个的第一次出现的位置。
感谢您的任何建议。
不与std::string::find
,但您可以使用std::find_if来自<algorithm>
:
std::string str("a string");
std::array<std::string, 3> a{"a string", "another string", "yet another string"};
auto it = std::find_if(begin(a), end(a),
[&](const std::string& s)
{return str.find(s) != std::string::npos; });
if (it != end(a))
{
std::cout << "found";
}
这是不可能的,但你可以做的是:
auto is_there(std::string haystack, std::vector<std::string> needles) -> std::string::size_type {
for(auto needle : needles ){
auto pos = haystack.find(needle);
if(pos != std::string::npos){
return pos;
}
}
return std::string::npos;
}
多次调用find
或从要查找的字符串构造正则表达式。C++11 支持<regex>
.