【问题标题】:convert an unsigned char to LPCSTR将无符号字符转换为 LPCSTR
【发布时间】:2012-09-16 21:40:34
【问题描述】:

您好,我正在使用 VS2010 和 MBCS。谁能告诉我如何将无符号字符转换为 LPCSTR?对不起,我只是 C++ 的新手...:) 谢谢

这是失败的代码:

    hr = MsiSetProperty(hInstall, "LOCKCODE",  szLockCode);
    ExitOnFailure(hr, "failed to set LOCKCODE");

szLockCode是需要转换的变量。

【问题讨论】:

  • 能否请您提供 1) 错误消息和 2) szLockCode 声明?

标签: c++


【解决方案1】:

您可能会收到如下错误消息:

无法将参数 3 从 'const char *' 转换为 'LPCWSTR'

为避免这种情况,您应该进行类型转换:

hr = MsiSetProperty(hInstall, "LOCKCODE",  (LPCSTR)szLockCode);

或在字符串前使用 L 前缀:

LPCSTR szLockCode = L"Some error";
hr = MsiSetProperty(hInstall, "LOCKCODE",  szLockCode );

这里很好地解释了 LPCSTR 的含义:

LPCSTR, LPCTSTR and LPTSTR

【讨论】:

  • -1:如果错误表明传递了错误的wide/ansi类型,绝对不要只转换为LPCSTR!
【解决方案2】:

一个无符号字符数组(例如unsigned char szLockCode[10])在技术上已经是一个LPCSTR。如果您已经在使用数组,那么转换不是问题,如果不是,那么您需要一个数组。如果你想要一个字符串,那么你需要一个长度为 2 的数组。字符放在第一个位置 (szLockCode[0]),值 0 放在第二个位置 (szLockCode[1])。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    相关资源
    最近更新 更多