Проблема с копированием файлов при конвертации в LPCTSTR - PullRequest
0 голосов
/ 29 марта 2010
// Convert to a wchar_t*

size_t origsize = strlen(toChar) + 1;

const size_t newsize = 100;

size_t convertedChars = 0;

wchar_t wcstring[newsize];

mbstowcs_s(&convertedChars, wcstring, origsize, toChar, _TRUNCATE);

wcscat_s(wcstring, L"\\*.*\0");

wcout << wcstring << endl; // C:\Documents and Settings\softnotions\Desktop\Release\*.*



SHFILEOPSTRUCT sf;

memset(&sf,0,sizeof(sf));

sf.hwnd = 0;

sf.wFunc = FO_COPY;

//sf.pFrom =wcstring;  /* when giving wcstring i am not getting answer */

 sf.pFrom = L"C:\\Documents and Settings\\softnotions\\Desktop\\Release\\*.*\0";

   wcout << sf.pFrom  <<endl;   // C:\Documents and Settings\softnotions\Desktop\Release\*.*

И wcstring, и sf.pFrom одинаковы, почему бы не получить ответ при назначении sf.pFrom =wcstring;

1 Ответ

1 голос
/ 29 марта 2010

SHFILEOPSTRUCT требует, чтобы pFrom и pTo были строки с двойным нулем в конце .

Строковый литерал, который вы присваиваете pFrom, имеет встроенный \0, поэтому строка заканчивается двойным нулем.

Когда вы вызываете wcscat_s, встроенный \0 интерпретируется как конец строки для добавления, поэтому результирующая строка не заканчивается двойным нулем.

Как вы говорите в своем комментарии, вы можете сделать это (хотя вам нужна функция wcslen):

wcscat_s(wcstring, L"\\*.*");
wcstring[wcslen(wcstring) + 1] = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...