unicode_string移植到CB上的问题

zhangwuji156 2008-11-18 06:22:35
typedef struct{
USHORT Length;
USHORT MaxLen;
USHORT *Buffer;
}UNICODE_STRING;
UNICODE_STRING str;
wprintf(L"%s", str.Buffer);

前面代码不变,我想将这个用AnsiString型表示出来。
AnsiString str2;
str2.sprintf("%s", str.Buffer);
貌似显示出来不正确。只能显示一个字符,也不知道是不是这儿错了。
...全文
53 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lenyunzi 2008-11-18
  • 打赏
  • 举报
回复
问题在于那个s
str2.sprintf("%s", str.Buffer); ===>str2.sprintf("%S", str.Buffer);


将%s换成大写的S试试吧

我也碰到过,搞了半天,才发现是那个问题
yuanreid 2008-11-18
  • 打赏
  • 举报
回复
楼上正解,不过要确保Buffer是\0结尾的。
shadowstar 2008-11-18
  • 打赏
  • 举报
回复
AnsiString str2((wchar_t*)str.Buffer);
zhangwuji156 2008-11-18
  • 打赏
  • 举报
回复
wchar_t w_cn = '中';
char c_cn[2] = {'0'} ;

char *C2W(wchar_t w_cn , char c_cn[2])

{

//following code convert wchar to char
c_cn[0] = w_cn >> 8 ;
c_cn[1] = w_cn ;
c_cn[2] = '\0';

return c_cn ;

}
文章出处:http://www.diybl.com/course/3_program/c++/cppsl/200882/134428.html
上网找到这个,如果全是ansii字符,我可以只取前一个字节,然后拼起来,但如果有汉字呢,难道还要我做一个算法,
是汉字的时候就两个都取?
zhangwuji156 2008-11-18
  • 打赏
  • 举报
回复
测试了一下,还真是这儿的问题

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧