LPWSTR 和 char 该如何转换?

jetix 2010-01-25 07:38:25
拿着别的人VC6代码在VS2008里编译
char disp[512];
char tmp[400];
rc = WSARecvEx1 ( s, buf, len, flags);
strncpy(tmp,buf,400);
wsprintf(disp,"WSARecvEx(len=%d,buf:%s)",len,tmp);
SaveRecord(disp);
return rc;
}

上面定义了 char disp[512];
到下面 wsprintf(disp,"WSARecvEx(len=%d,buf:%s)",len,tmp);
这里却有错 cant convert char to LPWSTR ,查MSDN才知道
int wsprintf(LPTSTR lpOut,LPCTSTR lpFmt,...);   

请问一下,这样转换可以不?
wsprintf(LPWSTR(disp),LPWSTR("WSARecvEx(len=%d,buf:%s)"),len,tmp);
可这样转换打印出来的是乱码啊?
上面的可不可以重新定义 char disp[512];,如果可以,该如何定义
...全文
1247 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jkgr15 2011-04-21
  • 打赏
  • 举报
回复
TCHAR disp[512];
...

wsprintf(disp,TEXT("WSARecvEx(len=%d,buf:%s)"),len,tmp);
把程序这样改一下就可以了,这涉及到ANSI和unicode的转换。
耍宝王 2010-01-25
  • 打赏
  • 举报
回复
LPWSTR实际上是wchar_t* 宽字符16位、2字节
LPSTR实际上是char* 字符8位、1字节

LPSTR->LPWSTR使用MultiByteToWideChar()函数

LPWSTR->LPSTR使用WideCharToMultiBytes()函数
macrojj 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 macrojj 的回复:]
wsprintf(LPWSTR(disp),"WSARecvEx(len=%d,buf:%s)",len,tmp);
LPWSTR 在没有开unicode 的情况下 就是char*
[/Quote]
错了P T S T R 才是。
macrojj 2010-01-25
  • 打赏
  • 举报
回复
wsprintf(LPWSTR(disp),"WSARecvEx(len=%d,buf:%s)",len,tmp);
LPWSTR 在没有开unicode 的情况下 就是char*
tony_chenypc 2010-01-25
  • 打赏
  • 举报
回复
WideCharToMultiBytes()函数
traceless 2010-01-25
  • 打赏
  • 举报
回复
倒。。一会A 一会W当然容易出错了 。。。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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