从ICU 4.2.1开始,将UnicodeString设置为C字符串的唯一直接方法是使用数据构造新的UnicodeString,然后将所需的字符串设置为新的字符串,从而分配,复制,并且比我想要的更多地释放数据。
有没有办法将UnicodeString设置为(空终止/长度)C字符串而无需手动分配数据?
也许在较新版本的ICU中? (我没有检查4.2.1以外的任何版本的文档,这是我的发行版上的最新版本。)
看起来应该是setTo(const char*)
方法,因为你可以用C字符串构造一个UnicodeString。
答案 0 :(得分:1)
我没有办法做到这一点,我会为setTo提交功能请求 - 甚至为它提供补丁!
答案 1 :(得分:0)
ICU字符串使用UTF-16编码,它是一系列UChars - 2字节条目,因此您无法透明地将char const *
字符串设置为UTF-16字符串(甚至是UTF-8)。该操作应涉及数据转换。