我想将一个字符数组转换为像这样的宽字符串
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring ws=converter.from_bytes({99,108,105,235,110,116}).
但这不起作用。
`235` is an invalid narrowing conversion from int to char:constant character doesn't fit in destination type.
答案 0 :(得分:1)
代码from_bytes
唯一可行的重载是版本为const byte_string&
。您没有使用自定义分配器,因此byte_string
为std::basic_string<char, std::char_traits<char>, std::allocator<char>>
,a.k.a。std::string
。
std::string
有一个initalizer_list<char>
构造函数;但是,您平台上的char
已签名,无法代表值235
,从而导致从235
到char
的隐式转换为缩小转化,但不允许支撑初始化列表的顶级。
使用char(235)
代替将其显式转换为char
。