如何转换CString LPStr

时间:2010-10-14 12:13:37

标签: c++ windows cstring

我想使用以下方法从注册表中读取值:

char* cDriveStatus=ReadFromRegistry(HKEY_CURRENT_USER,_T(NDSPATH),m_szDriveName);

我尝试使用GetBuffer m_szDriveName.GetBuffer(0)进行转换,但这再次显示错误:

  

错误C2664:无法将参数3从'wchar_t *'转换为'LPSTR'

修改 方法和变量声明如下:

char*   ReadFromRegistry(HKEY,LPCTSTR,LPSTR);
CString     m_szDriveName;

2 个答案:

答案 0 :(得分:1)

您的构建设置看起来像'Unicode'(基于对wchar_t的引用) - 您可以在项目的配置属性的常规页面,字符集字段中将其更改为“使用多字节字符集”,如果使用Unicode不是你的意图。

要查看项目的属性,请在“解决方案资源管理器”中右键单击该项目,然后选择“属性”。

您可能会发现ATL class CRegkey可以根据其类型从注册表中正确提取值。

答案 1 :(得分:0)

这对我有用:

char* cDriveStatus=ReadFromRegistry(HKEY_CURRENT_USER,_T(NDSPATH),(LPSTR)m_szDriveName.GetBuffer(m_szDriveName.GetLength()));