如何将整数转换为 std::u16string (C++11)?

问题描述 投票:0回答:2

没有办法

std::to_u16string(...)
。显然
static_cast
似乎不是进行此类转换的最合适方法。

对于相反的转换,从

string
int
,可以使用函数
std::stoi()
定义转换器,但从
int
u16string
它不起作用。

我尝试了以下方法:

int i = 1234;
std::u16string s;

std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert;
s = convert.from_bytes(std::to_string(i));

std::cout << s.str() << "  (" << s.length() << ")" << std::endl;

我也尝试这样做:

typedef std::basic_stringstream<char16_t> u16ss;
u16ss ss;
ss << 1234;
std::u16string s = ss.str();

但是不起作用。

有没有办法直接进行这个转换,还是必须有一些中间转换?

c++ string c++11 casting
2个回答
4
投票

您可以尝试以下方法:

std::u16string to_u16string(int const &i) {
  std::wstring_convert<std::codecvt_utf8_utf16<char16_t, 0x10ffff, std::little_endian>, char16_t> conv;
  return conv.from_bytes(std::to_string(i));
}

现场演示


0
投票

标准库头 (C++11)(在 C++17 中已弃用)(已删除 在 C++26 中) cpp参考

您可以使用 std::filesystem::path

std::u16string to_u16string(const std::filesystem::path& str) {
    return str.u16string();
}
std::u16string to_u16string(int i) {    
    return to_u16string(std::to_string(i));
}
    
© www.soinside.com 2019 - 2024. All rights reserved.