我需要将一个字符串格式化为双重空终止字符串,以便使用SHFileOperation。
有趣的是,我发现以下两种方法中只有一种有效:
// Example 1
CString szDir(_T("D:\\Test"));
szDir = szDir + _T('\0') + _T('\0');
// Example 2
CString szDir(_T("D:\\Test"));
szDir = szDir + _T("\0\0");
//Delete folder
SHFILEOPSTRUCT fileop;
fileop.hwnd = NULL; // no status display
fileop.wFunc = FO_DELETE; // delete operation
fileop.pFrom = szDir; // source file name as double null terminated string
fileop.pTo = NULL; // no destination needed
fileop.fFlags = FOF_NOCONFIRMATION|FOF_SILENT; // do not prompt the user
fileop.fAnyOperationsAborted = FALSE;
fileop.lpszProgressTitle = NULL;
fileop.hNameMappings = NULL;
int ret = SHFileOperation(&fileop);
有人对此有想法吗?
还有其他方法来添加双终止字符串吗?
friend CString operator+( const CString& string, LPCTSTR lpsz );
?(我的意思是+操作,而不是将CString
传递给SHFileOperation
) - Eugen Constantin DincaCString
的+
运算符将第二个操作数视为普通的以NUL结尾的char *
,它没有权利查看超出第一个 NUL终止符的内存。 - Greg Hewgill