0

是否有一种简单的 STL 方法可以将 std::string 转换为 std::u32string,即将 char 的 basic_string 转换为 char32_t?

这不是 Unicode 问题。

4

2 回答 2

1

初始化一个新字符串:

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;}
于 2014-11-11T12:42:28.900 回答
0
s32.resize(s.length());
std::copy(s.begin(),s.end(),s32.begin());
于 2014-11-11T11:20:14.297 回答