gpt4 book ai didi

c++11 - 将 char16_t 转换为 long/integer,(相当于 atoi/atol)

转载 作者:行者123 更新时间:2023-12-05 04:15:08 25 4
gpt4 key购买 nike

我想将 char16_t 转换为整数和/或长整数。

const char16_t* t = u"12";
long lt = atol( t);

这样的功能不存在吗?

最佳答案

试试这个函数:(它不一定是最有效的解决方案,但如果你别无选择(即你必须有一个 char16_t* 作为输入)它可以完成工作) 你确定你的 char16_t* 字符串中确实有一个有效的数字序列)

Run It Online

#include <codecvt>
#include <locale>
#include <string>

int char16_to_int(const char16_t* s16)
{
// https://stackoverflow.com/a/7235204/865719
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert;
std::string str = convert.to_bytes(s16);

return std::stoi(str);
}

long char16_to_long(const char16_t* s16)
{
// https://stackoverflow.com/a/7235204/865719
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert;
std::string str = convert.to_bytes(s16);

return std::stol(str);
}

编辑:我稍微重构了解决方案以减少重复:

Run It Online

#include <codecvt>
#include <locale>
#include <string>

std::string char16_to_string(const char16_t* s16)
{
// https://stackoverflow.com/a/7235204/865719
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert;
return convert.to_bytes(s16);
}

long char16_to_long(const char16_t* s16)
{
return stol(char16_to_string(s16));
}

int char16_to_int(const char16_t* s16)
{
return stoi(char16_to_string(s16));
}

关于c++11 - 将 char16_t 转换为 long/integer,(相当于 atoi/atol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33221242/

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