В настоящее время я разрабатываю программу, которая читает строки из текстового файла в 8-битном режиме ASCII, и я делаю функцию для назначения этой строки в wchar_t *
Здесь я использую макрос atlconv.h и USES_CONVERSION для преобразования строки в wstring. Итак, вот код:
void CSampleProvider::getCopy(CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR *a, const string s) {
USES_CONVERSION;
wstring temp(A2W (s.c_str ()));
a->pszLabel = new WCHAR(temp.length()+1);
if (!a->pszLabel)
return;
wcscpy_s(a->pszLabel, temp.size()+1, (LPWSTR)temp.c_str());
::MessageBox(NULL,s.c_str(),"getCopy",0);
return;
}
Я использовал отладчик для просмотра построчно. Он работает хорошо (т.е. содержимое a-> pszLabel, как я и ожидал, такое же, как содержимое s), пока не достигнет возврата. Когда он вернулся, появилась ошибка:
First-chance exception at 0x770f3067 in CPTest.exe: 0xC0000005: Access violation reading location 0x00200074.
Unhandled exception at 0x770f3067 in CPTest.exe: 0xC0000005: Access violation reading location 0x00200074.
Кто-нибудь знает, как это исправить? Пожалуйста, скажите мне. Ваши ответы высоко ценятся :)
Спасибо,
Reinardus
РЕДАКТИРОВАТЬ: О да, тип CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR является структурой, и один из ее членов является pszLabel, который является wchar_t *