将UnicodeString设置为C字符串而不分配新的UnicodeString

时间:2010-10-18 20:16:44

标签: c++ icu

从ICU 4.2.1开始,将UnicodeString设置为C字符串的唯一直接方法是使用数据构造新的UnicodeString,然后将所需的字符串设置为新的字符串,从而分配,复制,并且比我想要的更多地释放数据。

有没有办法将UnicodeString设置为(空终止/长度)C字符串而无需手动分配数据?

也许在较新版本的ICU中? (我没有检查4.2.1以外的任何版本的文档,这是我的发行版上的最新版本。)

看起来应该是setTo(const char*)方法,因为你可以用C字符串构造一个UnicodeString。

2 个答案:

答案 0 :(得分:1)

我没有办法做到这一点,我会为setTo提交功能请求 - 甚至为它提供补丁!

答案 1 :(得分:0)

ICU字符串使用UTF-16编码,它是一系列UChars - 2字节条目,因此您无法透明地将char const *字符串设置为UTF-16字符串(甚至是UTF-8)。该操作应涉及数据转换。