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

How to convert an integer to std::u16string (C++11)?

本文关键字:u16string C++11 std 整数 转换      更新时间:2023-10-16

没有方法std::to_u16string(...)。显然,static_cast似乎不是进行这种转换的最合适的方式。

对于相反的转换,从stringint,可以使用函数std::stoi()定义转换器,但从intu16string不起作用。

我尝试了以下方法:

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();

但它不起作用。

有没有办法直接进行这种转换,或者必须进行一些中间转换?

您可以尝试以下操作:

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));
}

实时演示