我在PathCombine功能上遇到了一些困難。它似乎不能與SHFileOperation()一起正常工作。我的代碼如下:PathCombine功能無法正常工作
//beginning of method
TCHAR* root = new TCHAR[MAX_PATH];
root = L"C:\\Users\\jhow\\Desktop\\\0";
//later on in the method
TCHAR* t1Dir = new TCHAR[MAX_PATH]; //root
TCHAR* t2Dir = new TCHAR[MAX_PATH]; //temp
PathCombine(t1Dir,root,L"Folder1\\%REPLACE_THIS%\\\0");
PathCombine(t2Dir,root,L"Folder1\\temp\0");
sf.pFrom = t1Dir;
//sf.pFrom = L"C:\\Users\\jhow\\Desktop\\Folder1\\%REPLACE_THIS%";
sf.pTo = temporaryDir;
//Copy files
int n = SHFileOperation(&sf);
當我有它喜歡它的正上方,該方法認爲sf.pTo,但由於某些原因,它不看sf.pFrom(即使有不同的組合玩耍後\和\ 0在路徑名稱的末尾)。 n變成2,我認爲這意味着沒有找到文件...但是例如,當我註釋掉。
sf.pFrom = t1Dir;
,取而代之的是:
sf.pFrom = L"C:\\Users\\jhow\\Desktop\\Folder1\\%REPLACE_THIS%";
SHFileOperation()的作品......它返回零,我可以看到所有文件複製到該目錄中。我發現這個奇怪的看法,因爲它們看起來是完全相同的字符串(即使當我調試並將鼠標懸停在變量上時)......任何人都知道爲什麼會發生這種情況?我的語法或邏輯有問題嗎?因爲我沒有看到它。我正在使用Visual Studio 2008.非常感謝您的時間。
,在跳出我的第一件事是你爲什麼要明確地空終止您的字符串文字? ''「'指示編譯器爲你做這件事,所以通過自己添加'\ 0'你最終會得到一個雙空終止的字符串。 –