gpt4 book ai didi

c++ - 使用 boost::lexical_cast 将 std::string 的 std::array 转换为相同大小的 std::tuple

转载 作者:行者123 更新时间:2023-11-28 02:23:24 25 4
gpt4 key购买 nike

我想创建一个函数,它接受字符串数组并通过对每个数组元素执行 lexical_cast 将其转换为元组。

std::array 大小与 std::tuple 大小相同,并且所有元组类型在编译时都是已知的

例如:

std::tuple<int, double> Result = Convert({"1", "1.0"});

int A, B;
std::tie(A, B) = Convert({"1", "2"});

如何在不支持 c++14 的情况下以可接受的性能做到这一点?

最佳答案

你可以

namespace detail
{

template <typename ... Ts, std::size_t N, std::size_t...Is>
std::tuple<Ts...>
Convert(const std::array<std::string, N>& s,
std::index_sequence<Is...>)
{
return std::tuple<Ts...>{boost::lexical_cast<Ts>(s[Is])...};
}

}

template <typename ... Ts, std::size_t N>
std::tuple<Ts...> Convert(const std::array<std::string, N>& s)
{
static_assert(N == sizeof...(Ts), "Unexpected size");
return detail::Convert<Ts...>(s, std::index_sequence_for<Ts...>());
}

使用方法:

std::array<std::string, 2u> ns = {"1", "4.2"};
auto t = Convert<int, double>(ns);

Demo

关于c++ - 使用 boost::lexical_cast 将 std::string 的 std::array 转换为相同大小的 std::tuple,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31515512/

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