gpt4 book ai didi

c++ - 模板友好字符串到 C++ 中的数字

转载 作者:行者123 更新时间:2023-12-01 08:26:41 25 4
gpt4 key购买 nike

在 C++ 标准库中有将字符串转换为数字类型的函数:

stoi
stol
stoll
stoul
stoull
stof
stod
stold

但我发现在模板代码中使用它们很乏味。为什么没有模板函数,例如:
template<typename T>
T sto(...)

将字符串转换为数字类型?

我没有看到任何不拥有它们的技术原因,但也许我错过了一些东西。它们可以专门用于调用底层命名函数并使用 enable_if/ concepts禁用非数字类型。

标准库中是否有任何模板友好的替代方案可以将字符串转换为数字类型,反之亦然?

最佳答案

Why there are no template functions something like:


C++17 有这样的通用字符串到数字函数,但命名不同。他们去了 std::from_chars ,它为所有数字类型重载。
如您所见,第一个重载将任何整数类型作为输出参数,并在可能的情况下为其分配值。
它可以像这样使用:
template<typename Numeric>
void stuff(std::string_view s) {
auto value = Numeric{};

auto [ptr, error] = std::from_chars(s.data(), s.data() + s.size(), value);

if (error != std::errc{}) {
// error with the conversion
} else {
// conversion successful, do stuff with value
}
}
如您所见,它可以在通用上下文中工作。

关于c++ - 模板友好字符串到 C++ 中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60301788/

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