如何在 VC++ 中将 char* 转换为 LPWSTR?
Posted
技术标签:
【中文标题】如何在 VC++ 中将 char* 转换为 LPWSTR?【英文标题】:How to Convert char* to LPWSTR in VC++? 【发布时间】:2010-12-30 10:25:48 【问题描述】:LPNETRESOURCEW nr = NULL;
memset(&nr, 0, sizeof (NETRESOURCE));
nr->lpLocalName = strDriveLetter.GetBuffer(strDriveLetter.GetLength()); // this line giving me error "Cannot Convert char* to LPWSTR"
感谢任何帮助。 谢谢。
【问题讨论】:
【参考方案1】:使用MultiByteToWideChar
函数;
const char* msg = "foobarbaz";
int len = strlen(msg) + 1;
wchar_t *w_msg = new wchar_t[len];
memset(w_msg, 0, len);
MultiByteToWideChar(CP_ACP, NULL, msg, -1, w_msg, len);
【讨论】:
问题是否有关于在 c/c++ 代码中将 * 放在哪里的 quideline?你在第一行和第三行代码做一些不同的事情。如果不遵循准则,您这样做是否有理由? 嗨@BuddyJoe。不确定是否有特定的指导方针,但我可以告诉你,如果你在同一行声明多个变量,alaint* c, p;
如果你期望 c
和 p
都是指针,你会遇到问题.不幸的是,你想写int *c, *p;
之类的东西。话虽如此,我不喜欢在同一行声明多个变量。【参考方案2】:
memset(&nr, 0, sizeof (NETRESOURCE));
这里的 nr 是一个 NULL 指针。这是不正确的。您应该首先通过使用像 new
这样的显式分配或在堆栈上分配来让 nr 指向一个有效的内存。
【讨论】:
以上是关于如何在 VC++ 中将 char* 转换为 LPWSTR?的主要内容,如果未能解决你的问题,请参考以下文章