是否有一种简单的STL方法将std :: string转换为std :: u32string,即char的basic_string为char32_t?
这不是Unicode问题。
答案 0 :(得分:0)
s32.resize(s.length());
std::copy(s.begin(),s.end(),s32.begin());
答案 1 :(得分:0)
初始化新字符串:
std::u32string s32(s.begin(), s.end());
分配给现有字符串:
s32.assign(s.begin(), s.end());
如果字符串可能包含支持范围char
以外的字符,则可能会导致符号扩展问题,将负值转换为大的正值。处理这种可能性更加混乱;在扩大价值之前,您必须转换为unsigned char
。
s32.resize(s.size());
std::transform(s.begin(), s.end(), s32.begin(),
[](char c) -> unsigned char {return c;});
或一个简单的循环
s32.clear(); // if not already empty
for (unsigned char c : s) {s32 += c;}