没有办法
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();
但是不起作用。
有没有办法直接进行这个转换,还是必须有一些中间转换?
您可以尝试以下方法:
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));
}
标准库头 (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));
}