Как конвертировать CString в LPStr - PullRequest
0 голосов
/ 14 октября 2010

Я хочу прочитать значение из реестра, используя следующий метод:

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 ]

1 голос
/ 14 октября 2010

Ваши настройки сборки выглядят как «Юникод» (на основе ссылки на wchar_t) - вы можете изменить это значение на «Использовать многобайтовый набор символов» на странице «Общие», поле «Набор символов», в Свойствах конфигурации вашего проекта, если используется Юникод это не ваше намерение.

Чтобы просмотреть свойства вашего проекта, щелкните правой кнопкой мыши проект в обозревателе решений и выберите Свойства.

Вы можете найти ATL class CRegkey , полезный для правильного извлечения значений из реестра в зависимости от их типа.

0 голосов
/ 15 октября 2010

Вот что у меня сработало:

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