wchar_t 是什么类型?跟AnsiString怎么转化?

YAMABACK 2002-09-16 04:49:36
如上
...全文
148 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Canvas 2002-09-16
  • 打赏
  • 举报
回复
高手高在基础好!好!学习!
以下是我搞的一段代码。
也是AnsiString to wchar_t*的,
可以解决以上问题,可是西里哗啦编了那么长一堆,
唉,大家看看吧,也许有帮助。。。。。没想到有这么简单的办法
LPWSTR MakeWideStrFromAnsi(LPSTR psz,BYTE bType)
{
LPWSTR pwsz;
int i;

//
if (!psz)
return NULL;

i = MultiByteToWideChar(CP_ACP, 0, psz, -1, NULL, 0);
if (i <= 0) return NULL;

//
switch (bType) {
case 0:
//
pwsz = (LPWSTR)SysAllocStringLen(NULL, i - 1);
break;
case 1:
pwsz = (LPWSTR)CoTaskMemAlloc(i * sizeof(WCHAR));
break;
default:
break;
//
}

if (!pwsz) return NULL;
MultiByteToWideChar(CP_ACP, 0, psz, -1, pwsz, i);
pwsz[i - 1] = 0;
return pwsz;
}
调用时
AnsiString str="Canvas is a poor man";
wchar_t* oleStr=MakeWideStrFromAnsi(str,0);
大家看看。
猛禽 2002-09-16
  • 打赏
  • 举报
回复
同意楼上,用WideString类型中转
wchar_t *对于WideString相当于
char *对于AnsiString
孩皮妞野 2002-09-16
  • 打赏
  • 举报
回复
就是宽字符。每字符2字节。

String s("Hello, world");

WideString ws(s);

wchar_t * wc = ws.c_bstr();
camelxz 2002-09-16
  • 打赏
  • 举报
回复
好像是WideString函数,你去查查。
lingbin 2002-09-16
  • 打赏
  • 举报
回复
是啊,
wchar_t str;
str = WideString("").c_str;
wxz 2002-09-16
  • 打赏
  • 举报
回复
这个问题问过多次了

AnsiString As;
WidsString Ws = As;
wchat_t *wp = Ws.cb_str();
-----------------------
CSDN离线浏览器
   往事悠悠
   网事幽幽
-----------------------
NowCan 2002-09-16
  • 打赏
  • 举报
回复
不用,wchar_t -> AnsiString,直接AnsiString(...);
AnsiString -> wchar_t,用AnsiString的WideChar方法。
wangxd 2002-09-16
  • 打赏
  • 举报
回复
widestring可以做中间人

13,825

社区成员

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

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