// 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;
时却没有得到答案 最佳答案
SHFILEOPSTRUCT
要求pFrom
和pTo
为double-null-terminated strings。
您分配给pFrom
的字符串文字具有嵌入的\0
,因此该字符串以双null结尾。
当您调用wcscat_s
时,嵌入的\0
被解释为要附加的字符串的末尾,因此生成的字符串不是以双null结尾的。
正如您在评论中所说,您可以执行此操作(尽管您需要的功能是wcslen
):
wcscat_s(wcstring, L"\\*.*");
wcstring[wcslen(wcstring) + 1] = 0;