gpt4 book ai didi

c++ - vector 中每个元素的模式匹配

转载 作者:行者123 更新时间:2023-11-28 06:45:16 25 4
gpt4 key购买 nike

我有一个看起来像这样的函数:

bool ExpandWildCard(vector<string>& names, vector<string>& result, string& wildcard) 
{
}

在这里,我想将 wildcard 与 vector names 中的每个元素进行匹配,如果匹配,则将元素添加到 names 中> 到 result vector 。

当然,如果通配符是 *,我可以只添加从 namesresults 的所有内容。另外,我现在只是尝试实现 * 通配符。

我如何在 C++ 中执行此操作?

我想到的一种方法是使用 find() 算法,但我不确定我是否会使用它来匹配通配符?

最佳答案

看起来您正在寻找 std::copy_if 的某种组合也许std::regex_match :

bool ExpandWildCard(vector<string>& names, vector<string>& result, string& wildcard) {
auto oldsize = result.size();
std::copy_if(std::begin(names), std::end(names),
std::back_inserter(result),
[&](string const& name) {
return std::regex_match(name, make_regex(wildcard));
}
);

return (result.size() > oldsize);
}

make_regex 是您需要实现的将字符串转换为 std::regex 的函数。

关于c++ - vector 中每个元素的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com