gpt4 book ai didi

c++ - 如何在 C++ 中将函数列表应用于字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:17:01 26 4
gpt4 key购买 nike

我有一个需要附加应用于单个字符串的函数列表。如何表达“应用”功能。

auto outPutString = inputString
.Apply(Transformation1)
.Apply(Transformation2)

在 C++ 中?

字符串是std::string

最佳答案

从 C++ 11 开始,您还可以使用可变参数模板编写 Apply 函数:

template <typename OutputT, typename InputT>
OutputT Apply(const InputT &obj)
{
return obj;
}

template <typename OutputT, typename InputT, typename Func, typename... OtherFuncs>
OutputT Apply(const InputT &obj, Func f, OtherFuncs... other)
{
return Apply<OutputT, decltype(f(obj))>(f(obj), other...);
}

然后你可以按如下方式使用它:

auto res = Apply<std::string>(
"Hello",
[](const std::string &str) { return str + " "; }, // Applicator 1
[](const std::string &str) { return str + "World"; } // Applicator 2
);

本例中的结果是 »Hello World«。

因为上面的构造区分了 InputTOutputT,你可以“混合”类型,如:

auto res = Apply<size_t>(
"Hello",
[](const std::string &str) { return str + " World"; }, // Applicator 1
[](const std::string &str) { return str.size(); } // Applicator 2
);

这次的结果是11

最后,如果您真的想使用链接语法,您可以编写一个包装初始对象并具有 Apply 方法的类。

关于c++ - 如何在 C++ 中将函数列表应用于字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54463562/

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