有没有办法做得很好。当我尝试使用Boost to_upper()
时,我得到std::bad_cast
,所以我以这样的结尾:
while(str[i]!=u'\0')
{
str[i]=(char16_t)to_upper((wchar_t)str[i]);
i++;
}
我甚至不确定这是否正确,因为我不知道to_upper
的{{1}}是否与原始字符具有相同的大小。而且我不确定这是否会导致覆盖下一个角色或者再次阅读最后一个角色的后半部分。对不起我的愚蠢问题,但是在随机访问和具有可变长度编码的字符类型方面我遇到了问题。
答案 0 :(得分:2)
最好的方法可能就是这样:
char16_t upper = std::use_facet<std::ctype<char16_t>>(std::locale()).toupper(ch);