gpt4 book ai didi

c++ - 将 u16string 转换为 float

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:03 28 4
gpt4 key购买 nike

我有一个utf16编码的字符串,我想把它转换成 float

例如
如果有像 u"1342.223" 这样的 utf16 字符串,它应该以 float 形式返回 1342.223,如果它是 utf8,我曾经使用 stod 函数转换它, 但如何在 utf16 编码字符串 std::u16string

上完成这项工作

最佳答案

这个没有标准函数。如果您可以在恰好使用 16 位 宽字符的系统上使用 std::wstring,您可以使用:

double d;
std::wistringstream(L"1342.223") >> d;

否则,您可以利用将数字从 UTF-16 简单转换为 ASCII/UTF-8 的优势来编写快速转换函数。它并不理想,但应该相当有效:

double u16stod(std::u16string const& u16s)
{
char buf[std::numeric_limits<double>::max_digits10 + 1];

std::transform(std::begin(u16s), std::end(u16s), buf,
[](char16_t c){ return char(c); });

buf[u16s.size()] = '\0'; // terminator

// some error checking here?
return std::strtod(buf, NULL);
}

关于c++ - 将 u16string 转换为 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49232505/

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