vbox 字符串处理 RTStr转utf16

RTSt

文件 \src\VBox\Runtime\r3\win\fileio-win.cpp

 PRTUTF16 pwszFilename;
   rc = RTStrToUtf16(pszFilename, &pwszFilename);

 

RTStrToUtf16 方法实际是 RTStrToUtf16Tag 参数pszTag由宏定义加上

文件:\src\VBox\Runtime\common\string\utf-8.cpp

 

 RTStrToUtf16Tag(const char *pszString, PRTUTF16 *ppwszString, const char *pszTag)

 

A) size_t cwc;
  int rc = rtUtf8CalcUtf16Length(pszString, RTSTR_MAX, &cwc); //cwc 是Utf8字符串长度

B) 分配utf16字符串空间 (这里的pszTag == D:\xxx\src\VBox\Runtime\r3\win\fileio-win.cpp)

 PRTUTF16 pwsz = (PRTUTF16)RTMemAllocTag((cwc + 1) * sizeof(RTUTF16), pszTag);

C) 编码成utf16

   /*
             * Encode the UTF-16 string.
             */
            rc = rtUtf8RecodeAsUtf16(pszString, RTSTR_MAX, pwsz, cwc);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值