如何在 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。不确定是否有特定的指导方针,但我可以告诉你,如果你在同一行声明多个变量,ala int* c, p; 如果你期望 cp 都是指针,你会遇到问题.不幸的是,你想写int *c, *p; 之类的东西。话虽如此,我不喜欢在同一行声明多个变量。【参考方案2】:

memset(&nr, 0, sizeof (NETRESOURCE)); 这里的 nr 是一个 NULL 指针。这是不正确的。您应该首先通过使用像 new 这样的显式分配或在堆栈上分配来让 nr 指向一个有效的内存。

【讨论】:

以上是关于如何在 VC++ 中将 char* 转换为 LPWSTR?的主要内容,如果未能解决你的问题,请参考以下文章

在 vc++ 中将字符串转换为双精度

如何在 vc 6.0 中将对象转换或分配为 Variant 类型

如何在 mFC VC++ 中将编辑控件的背景转换为透明?

在 VC++ 中将 TCHAR 转换为 LPWSTR?

如何在 C++ 中将字符串转换为 char 数组?

如何在C中将char转换为整数? [复制]